<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Doxygen: pcl::VoxelGrid&lt; PointT &gt; 模板类 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Doxygen
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- 制作者 Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'搜索','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','搜索');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('classpcl_1_1_voxel_grid.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#pub-methods">Public 成员函数</a> &#124;
<a href="#pro-types">Protected 类型</a> &#124;
<a href="#pro-methods">Protected 成员函数</a> &#124;
<a href="#pro-attribs">Protected 属性</a> &#124;
<a href="classpcl_1_1_voxel_grid-members.html">所有成员列表</a>  </div>
  <div class="headertitle">
<div class="title">pcl::VoxelGrid&lt; PointT &gt; 模板类 参考</div>  </div>
</div><!--header-->
<div class="contents">

<p><a class="el" href="classpcl_1_1_voxel_grid.html" title="VoxelGrid assembles a local 3D grid over a given PointCloud, and downsamples + filters the data.">VoxelGrid</a> assembles a local 3D grid over a given <a class="el" href="classpcl_1_1_point_cloud.html" title="PointCloud represents the base class in PCL for storing collections of 3D points.">PointCloud</a>, and downsamples + filters the data.  
 <a href="classpcl_1_1_voxel_grid.html#details">更多...</a></p>

<p><code>#include &lt;<a class="el" href="filters_2include_2pcl_2filters_2voxel__grid_8h_source.html">voxel_grid.h</a>&gt;</code></p>
<div class="dynheader">
类 pcl::VoxelGrid&lt; PointT &gt; 继承关系图:</div>
<div class="dyncontent">
 <div class="center">
  <img src="classpcl_1_1_voxel_grid.png" usemap="#pcl::VoxelGrid_3C_20PointT_20_3E_map" alt=""/>
  <map id="pcl::VoxelGrid_3C_20PointT_20_3E_map" name="pcl::VoxelGrid_3C_20PointT_20_3E_map">
<area href="classpcl_1_1_filter.html" title="Filter represents the base filter class. All filters must inherit from this interface." alt="pcl::Filter&lt; PointT &gt;" shape="rect" coords="136,56,399,80"/>
<area href="classpcl_1_1_p_c_l_base.html" title="PCL base class. Implements methods that are used by most PCL algorithms." alt="pcl::PCLBase&lt; PointT &gt;" shape="rect" coords="136,0,399,24"/>
<area href="classpcl_1_1_voxel_grid_covariance.html" title="A searchable voxel strucure containing the mean and covariance of the data." alt="pcl::VoxelGridCovariance&lt; PointT &gt;" shape="rect" coords="0,168,263,192"/>
<area href="classpcl_1_1_voxel_grid_occlusion_estimation.html" title="VoxelGrid to estimate occluded space in the scene. The ray traversal algorithm is implemented by the ..." alt="pcl::VoxelGridOcclusionEstimation&lt; PointT &gt;" shape="rect" coords="273,168,536,192"/>
  </map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public 成员函数</h2></td></tr>
<tr class="memitem:a76a7dabd27331f7348aca3f20397bfbc"><td class="memItemLeft" align="right" valign="top"><a id="a76a7dabd27331f7348aca3f20397bfbc"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_voxel_grid.html#a76a7dabd27331f7348aca3f20397bfbc">VoxelGrid</a> ()</td></tr>
<tr class="memdesc:a76a7dabd27331f7348aca3f20397bfbc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Empty constructor. <br /></td></tr>
<tr class="separator:a76a7dabd27331f7348aca3f20397bfbc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a233569b974c8eadc98f75e1ca5ef9eab"><td class="memItemLeft" align="right" valign="top"><a id="a233569b974c8eadc98f75e1ca5ef9eab"></a>
virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_voxel_grid.html#a233569b974c8eadc98f75e1ca5ef9eab">~VoxelGrid</a> ()</td></tr>
<tr class="memdesc:a233569b974c8eadc98f75e1ca5ef9eab"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor. <br /></td></tr>
<tr class="separator:a233569b974c8eadc98f75e1ca5ef9eab"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa5d7831e665977bdce76ed05bd0005cf"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_voxel_grid.html#aa5d7831e665977bdce76ed05bd0005cf">setLeafSize</a> (const Eigen::Vector4f &amp;leaf_size)</td></tr>
<tr class="memdesc:aa5d7831e665977bdce76ed05bd0005cf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the voxel grid leaf size.  <a href="classpcl_1_1_voxel_grid.html#aa5d7831e665977bdce76ed05bd0005cf">更多...</a><br /></td></tr>
<tr class="separator:aa5d7831e665977bdce76ed05bd0005cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adf15a6f5cc058b790be6557c4fb11022"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_voxel_grid.html#adf15a6f5cc058b790be6557c4fb11022">setLeafSize</a> (float lx, float ly, float lz)</td></tr>
<tr class="memdesc:adf15a6f5cc058b790be6557c4fb11022"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the voxel grid leaf size.  <a href="classpcl_1_1_voxel_grid.html#adf15a6f5cc058b790be6557c4fb11022">更多...</a><br /></td></tr>
<tr class="separator:adf15a6f5cc058b790be6557c4fb11022"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6766e862450a1d8a45301280e156ba6c"><td class="memItemLeft" align="right" valign="top"><a id="a6766e862450a1d8a45301280e156ba6c"></a>
Eigen::Vector3f&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_voxel_grid.html#a6766e862450a1d8a45301280e156ba6c">getLeafSize</a> ()</td></tr>
<tr class="memdesc:a6766e862450a1d8a45301280e156ba6c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the voxel grid leaf size. <br /></td></tr>
<tr class="separator:a6766e862450a1d8a45301280e156ba6c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1694d46442c66f7071235a8571dd602a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_voxel_grid.html#a1694d46442c66f7071235a8571dd602a">setDownsampleAllData</a> (bool downsample)</td></tr>
<tr class="memdesc:a1694d46442c66f7071235a8571dd602a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set to true if all fields need to be downsampled, or false if just XYZ.  <a href="classpcl_1_1_voxel_grid.html#a1694d46442c66f7071235a8571dd602a">更多...</a><br /></td></tr>
<tr class="separator:a1694d46442c66f7071235a8571dd602a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af88dc139ffea89a7a400c5c39c087099"><td class="memItemLeft" align="right" valign="top"><a id="af88dc139ffea89a7a400c5c39c087099"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_voxel_grid.html#af88dc139ffea89a7a400c5c39c087099">getDownsampleAllData</a> ()</td></tr>
<tr class="memdesc:af88dc139ffea89a7a400c5c39c087099"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the state of the internal downsampling parameter (true if all fields need to be downsampled, false if just XYZ). <br /></td></tr>
<tr class="separator:af88dc139ffea89a7a400c5c39c087099"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaed8373030c2ec0ec7571a7851d37c2c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_voxel_grid.html#aaed8373030c2ec0ec7571a7851d37c2c">setMinimumPointsNumberPerVoxel</a> (unsigned int min_points_per_voxel)</td></tr>
<tr class="memdesc:aaed8373030c2ec0ec7571a7851d37c2c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the minimum number of points required for a voxel to be used.  <a href="classpcl_1_1_voxel_grid.html#aaed8373030c2ec0ec7571a7851d37c2c">更多...</a><br /></td></tr>
<tr class="separator:aaed8373030c2ec0ec7571a7851d37c2c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7f16d806b45978fa67c4a69e4d025938"><td class="memItemLeft" align="right" valign="top"><a id="a7f16d806b45978fa67c4a69e4d025938"></a>
unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_voxel_grid.html#a7f16d806b45978fa67c4a69e4d025938">getMinimumPointsNumberPerVoxel</a> ()</td></tr>
<tr class="memdesc:a7f16d806b45978fa67c4a69e4d025938"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the minimum number of points required for a voxel to be used. <br /></td></tr>
<tr class="separator:a7f16d806b45978fa67c4a69e4d025938"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aabb07bacf03039f40d256b36ee2dd495"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_voxel_grid.html#aabb07bacf03039f40d256b36ee2dd495">setSaveLeafLayout</a> (bool save_leaf_layout)</td></tr>
<tr class="memdesc:aabb07bacf03039f40d256b36ee2dd495"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set to true if leaf layout information needs to be saved for later access.  <a href="classpcl_1_1_voxel_grid.html#aabb07bacf03039f40d256b36ee2dd495">更多...</a><br /></td></tr>
<tr class="separator:aabb07bacf03039f40d256b36ee2dd495"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae3d7e68ede5c712c036fd2237795f3bb"><td class="memItemLeft" align="right" valign="top"><a id="ae3d7e68ede5c712c036fd2237795f3bb"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_voxel_grid.html#ae3d7e68ede5c712c036fd2237795f3bb">getSaveLeafLayout</a> ()</td></tr>
<tr class="memdesc:ae3d7e68ede5c712c036fd2237795f3bb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if leaf layout information will to be saved for later access. <br /></td></tr>
<tr class="separator:ae3d7e68ede5c712c036fd2237795f3bb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a69443c2cde9e6ee5d5eccfe1e37adccc"><td class="memItemLeft" align="right" valign="top"><a id="a69443c2cde9e6ee5d5eccfe1e37adccc"></a>
Eigen::Vector3i&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_voxel_grid.html#a69443c2cde9e6ee5d5eccfe1e37adccc">getMinBoxCoordinates</a> ()</td></tr>
<tr class="memdesc:a69443c2cde9e6ee5d5eccfe1e37adccc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the minimum coordinates of the bounding box (after filtering is performed). <br /></td></tr>
<tr class="separator:a69443c2cde9e6ee5d5eccfe1e37adccc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac344416d7cd23ffbd0732a9e3e6c0ec5"><td class="memItemLeft" align="right" valign="top"><a id="ac344416d7cd23ffbd0732a9e3e6c0ec5"></a>
Eigen::Vector3i&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_voxel_grid.html#ac344416d7cd23ffbd0732a9e3e6c0ec5">getMaxBoxCoordinates</a> ()</td></tr>
<tr class="memdesc:ac344416d7cd23ffbd0732a9e3e6c0ec5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the minimum coordinates of the bounding box (after filtering is performed). <br /></td></tr>
<tr class="separator:ac344416d7cd23ffbd0732a9e3e6c0ec5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afdd69e5c0290757f44d64c7c69384d17"><td class="memItemLeft" align="right" valign="top"><a id="afdd69e5c0290757f44d64c7c69384d17"></a>
Eigen::Vector3i&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_voxel_grid.html#afdd69e5c0290757f44d64c7c69384d17">getNrDivisions</a> ()</td></tr>
<tr class="memdesc:afdd69e5c0290757f44d64c7c69384d17"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the number of divisions along all 3 axes (after filtering is performed). <br /></td></tr>
<tr class="separator:afdd69e5c0290757f44d64c7c69384d17"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5ac7ed575c8b7fc8a47e774e9cec2065"><td class="memItemLeft" align="right" valign="top"><a id="a5ac7ed575c8b7fc8a47e774e9cec2065"></a>
Eigen::Vector3i&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_voxel_grid.html#a5ac7ed575c8b7fc8a47e774e9cec2065">getDivisionMultiplier</a> ()</td></tr>
<tr class="memdesc:a5ac7ed575c8b7fc8a47e774e9cec2065"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the multipliers to be applied to the grid coordinates in order to find the centroid index (after filtering is performed). <br /></td></tr>
<tr class="separator:a5ac7ed575c8b7fc8a47e774e9cec2065"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0b7ead02de1bfcce1100ff66cbc12998"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_voxel_grid.html#a0b7ead02de1bfcce1100ff66cbc12998">getCentroidIndex</a> (const <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;p)</td></tr>
<tr class="memdesc:a0b7ead02de1bfcce1100ff66cbc12998"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the index in the resulting downsampled cloud of the specified point.  <a href="classpcl_1_1_voxel_grid.html#a0b7ead02de1bfcce1100ff66cbc12998">更多...</a><br /></td></tr>
<tr class="separator:a0b7ead02de1bfcce1100ff66cbc12998"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a28015aa9f1c9329c66ce8a02b727a783"><td class="memItemLeft" align="right" valign="top">std::vector&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_voxel_grid.html#a28015aa9f1c9329c66ce8a02b727a783">getNeighborCentroidIndices</a> (const <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;reference_point, const Eigen::MatrixXi &amp;relative_coordinates)</td></tr>
<tr class="memdesc:a28015aa9f1c9329c66ce8a02b727a783"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the indices in the resulting downsampled cloud of the points at the specified grid coordinates, relative to the grid coordinates of the specified point (or -1 if the cell was empty/out of bounds).  <a href="classpcl_1_1_voxel_grid.html#a28015aa9f1c9329c66ce8a02b727a783">更多...</a><br /></td></tr>
<tr class="separator:a28015aa9f1c9329c66ce8a02b727a783"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3ab26a1286bc68d1129e1a62908869ce"><td class="memItemLeft" align="right" valign="top">std::vector&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_voxel_grid.html#a3ab26a1286bc68d1129e1a62908869ce">getLeafLayout</a> ()</td></tr>
<tr class="memdesc:a3ab26a1286bc68d1129e1a62908869ce"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the layout of the leafs for fast access to cells relative to current position.  <a href="classpcl_1_1_voxel_grid.html#a3ab26a1286bc68d1129e1a62908869ce">更多...</a><br /></td></tr>
<tr class="separator:a3ab26a1286bc68d1129e1a62908869ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a900833dc1c7222056de41c358b0534b8"><td class="memItemLeft" align="right" valign="top">Eigen::Vector3i&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_voxel_grid.html#a900833dc1c7222056de41c358b0534b8">getGridCoordinates</a> (float x, float y, float z)</td></tr>
<tr class="memdesc:a900833dc1c7222056de41c358b0534b8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the corresponding (i,j,k) coordinates in the grid of point (x,y,z).  <a href="classpcl_1_1_voxel_grid.html#a900833dc1c7222056de41c358b0534b8">更多...</a><br /></td></tr>
<tr class="separator:a900833dc1c7222056de41c358b0534b8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1343f669f040cee74afcf0bdafef68ee"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_voxel_grid.html#a1343f669f040cee74afcf0bdafef68ee">getCentroidIndexAt</a> (const Eigen::Vector3i &amp;ijk)</td></tr>
<tr class="memdesc:a1343f669f040cee74afcf0bdafef68ee"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the index in the downsampled cloud corresponding to a given set of coordinates.  <a href="classpcl_1_1_voxel_grid.html#a1343f669f040cee74afcf0bdafef68ee">更多...</a><br /></td></tr>
<tr class="separator:a1343f669f040cee74afcf0bdafef68ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a155aa8fce756b002bb1b4b352f8f530f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_voxel_grid.html#a155aa8fce756b002bb1b4b352f8f530f">setFilterFieldName</a> (const std::string &amp;field_name)</td></tr>
<tr class="memdesc:a155aa8fce756b002bb1b4b352f8f530f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provide the name of the field to be used for filtering data. In conjunction with <em>setFilterLimits</em>, points having values outside this interval will be discarded.  <a href="classpcl_1_1_voxel_grid.html#a155aa8fce756b002bb1b4b352f8f530f">更多...</a><br /></td></tr>
<tr class="separator:a155aa8fce756b002bb1b4b352f8f530f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2b786e2d4ae89d179625278fe1e000fb"><td class="memItemLeft" align="right" valign="top"><a id="a2b786e2d4ae89d179625278fe1e000fb"></a>
std::string const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_voxel_grid.html#a2b786e2d4ae89d179625278fe1e000fb">getFilterFieldName</a> ()</td></tr>
<tr class="memdesc:a2b786e2d4ae89d179625278fe1e000fb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the name of the field used for filtering. <br /></td></tr>
<tr class="separator:a2b786e2d4ae89d179625278fe1e000fb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afc6d78962d7378aea245381fdb13e65e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_voxel_grid.html#afc6d78962d7378aea245381fdb13e65e">setFilterLimits</a> (const double &amp;limit_min, const double &amp;limit_max)</td></tr>
<tr class="memdesc:afc6d78962d7378aea245381fdb13e65e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the field filter limits. All points having field values outside this interval will be discarded.  <a href="classpcl_1_1_voxel_grid.html#afc6d78962d7378aea245381fdb13e65e">更多...</a><br /></td></tr>
<tr class="separator:afc6d78962d7378aea245381fdb13e65e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6d533280865d5fbd991b8b45383b4fb2"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_voxel_grid.html#a6d533280865d5fbd991b8b45383b4fb2">getFilterLimits</a> (double &amp;limit_min, double &amp;limit_max)</td></tr>
<tr class="memdesc:a6d533280865d5fbd991b8b45383b4fb2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the field filter limits (min/max) set by the user. The default values are -FLT_MAX, FLT_MAX.  <a href="classpcl_1_1_voxel_grid.html#a6d533280865d5fbd991b8b45383b4fb2">更多...</a><br /></td></tr>
<tr class="separator:a6d533280865d5fbd991b8b45383b4fb2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1fc5ee26e1ab45ceb7eb7f28fa7c09ba"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_voxel_grid.html#a1fc5ee26e1ab45ceb7eb7f28fa7c09ba">setFilterLimitsNegative</a> (const bool limit_negative)</td></tr>
<tr class="memdesc:a1fc5ee26e1ab45ceb7eb7f28fa7c09ba"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set to true if we want to return the data outside the interval specified by setFilterLimits (min, max). Default: false.  <a href="classpcl_1_1_voxel_grid.html#a1fc5ee26e1ab45ceb7eb7f28fa7c09ba">更多...</a><br /></td></tr>
<tr class="separator:a1fc5ee26e1ab45ceb7eb7f28fa7c09ba"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1faafa6a4c3fe10e1e7d83fe353de058"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_voxel_grid.html#a1faafa6a4c3fe10e1e7d83fe353de058">getFilterLimitsNegative</a> (bool &amp;limit_negative)</td></tr>
<tr class="memdesc:a1faafa6a4c3fe10e1e7d83fe353de058"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get whether the data outside the interval (min/max) is to be returned (true) or inside (false).  <a href="classpcl_1_1_voxel_grid.html#a1faafa6a4c3fe10e1e7d83fe353de058">更多...</a><br /></td></tr>
<tr class="separator:a1faafa6a4c3fe10e1e7d83fe353de058"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a41b9bf8bdb39475a714bf09d0bffa1b2"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_voxel_grid.html#a41b9bf8bdb39475a714bf09d0bffa1b2">getFilterLimitsNegative</a> ()</td></tr>
<tr class="memdesc:a41b9bf8bdb39475a714bf09d0bffa1b2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get whether the data outside the interval (min/max) is to be returned (true) or inside (false).  <a href="classpcl_1_1_voxel_grid.html#a41b9bf8bdb39475a714bf09d0bffa1b2">更多...</a><br /></td></tr>
<tr class="separator:a41b9bf8bdb39475a714bf09d0bffa1b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classpcl_1_1_filter"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classpcl_1_1_filter')"><img src="closed.png" alt="-"/>&#160;Public 成员函数 继承自 <a class="el" href="classpcl_1_1_filter.html">pcl::Filter&lt; PointT &gt;</a></td></tr>
<tr class="memitem:af31e766a9092a766962f42005c1b84a4 inherit pub_methods_classpcl_1_1_filter"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_filter.html#af31e766a9092a766962f42005c1b84a4">Filter</a> (bool extract_removed_indices=false)</td></tr>
<tr class="memdesc:af31e766a9092a766962f42005c1b84a4 inherit pub_methods_classpcl_1_1_filter"><td class="mdescLeft">&#160;</td><td class="mdescRight">Empty constructor.  <a href="classpcl_1_1_filter.html#af31e766a9092a766962f42005c1b84a4">更多...</a><br /></td></tr>
<tr class="separator:af31e766a9092a766962f42005c1b84a4 inherit pub_methods_classpcl_1_1_filter"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a11163e4d01519df900e6144f705f6980 inherit pub_methods_classpcl_1_1_filter"><td class="memItemLeft" align="right" valign="top"><a id="a11163e4d01519df900e6144f705f6980"></a>
virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_filter.html#a11163e4d01519df900e6144f705f6980">~Filter</a> ()</td></tr>
<tr class="memdesc:a11163e4d01519df900e6144f705f6980 inherit pub_methods_classpcl_1_1_filter"><td class="mdescLeft">&#160;</td><td class="mdescRight">Empty destructor <br /></td></tr>
<tr class="separator:a11163e4d01519df900e6144f705f6980 inherit pub_methods_classpcl_1_1_filter"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae451ce8a0981e8589812d4f3b135a335 inherit pub_methods_classpcl_1_1_filter"><td class="memItemLeft" align="right" valign="top"><a id="ae451ce8a0981e8589812d4f3b135a335"></a>
IndicesConstPtr const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_filter.html#ae451ce8a0981e8589812d4f3b135a335">getRemovedIndices</a> ()</td></tr>
<tr class="memdesc:ae451ce8a0981e8589812d4f3b135a335 inherit pub_methods_classpcl_1_1_filter"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the point indices being removed <br /></td></tr>
<tr class="separator:ae451ce8a0981e8589812d4f3b135a335 inherit pub_methods_classpcl_1_1_filter"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:add67775d121c2dd536d3306ef447431e inherit pub_methods_classpcl_1_1_filter"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_filter.html#add67775d121c2dd536d3306ef447431e">getRemovedIndices</a> (<a class="el" href="structpcl_1_1_point_indices.html">PointIndices</a> &amp;pi)</td></tr>
<tr class="memdesc:add67775d121c2dd536d3306ef447431e inherit pub_methods_classpcl_1_1_filter"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the point indices being removed  <a href="classpcl_1_1_filter.html#add67775d121c2dd536d3306ef447431e">更多...</a><br /></td></tr>
<tr class="separator:add67775d121c2dd536d3306ef447431e inherit pub_methods_classpcl_1_1_filter"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a17115897ca28f6b12950d023958aa641 inherit pub_methods_classpcl_1_1_filter"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_filter.html#a17115897ca28f6b12950d023958aa641">filter</a> (<a class="el" href="classpcl_1_1_point_cloud.html">PointCloud</a> &amp;output)</td></tr>
<tr class="memdesc:a17115897ca28f6b12950d023958aa641 inherit pub_methods_classpcl_1_1_filter"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calls the filtering method and returns the filtered dataset in output.  <a href="classpcl_1_1_filter.html#a17115897ca28f6b12950d023958aa641">更多...</a><br /></td></tr>
<tr class="separator:a17115897ca28f6b12950d023958aa641 inherit pub_methods_classpcl_1_1_filter"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classpcl_1_1_p_c_l_base"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classpcl_1_1_p_c_l_base')"><img src="closed.png" alt="-"/>&#160;Public 成员函数 继承自 <a class="el" href="classpcl_1_1_p_c_l_base.html">pcl::PCLBase&lt; PointT &gt;</a></td></tr>
<tr class="memitem:af4fbc5eb005057f8a0fc6d60bde595df inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="af4fbc5eb005057f8a0fc6d60bde595df"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#af4fbc5eb005057f8a0fc6d60bde595df">PCLBase</a> ()</td></tr>
<tr class="memdesc:af4fbc5eb005057f8a0fc6d60bde595df inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Empty constructor. <br /></td></tr>
<tr class="separator:af4fbc5eb005057f8a0fc6d60bde595df inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7a6dd7a91275d7737cf1b18005b47244 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="a7a6dd7a91275d7737cf1b18005b47244"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#a7a6dd7a91275d7737cf1b18005b47244">PCLBase</a> (const <a class="el" href="classpcl_1_1_p_c_l_base.html">PCLBase</a> &amp;base)</td></tr>
<tr class="memdesc:a7a6dd7a91275d7737cf1b18005b47244 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy constructor. <br /></td></tr>
<tr class="separator:a7a6dd7a91275d7737cf1b18005b47244 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad5d6846e98e59c37dcc3dc9958d53966 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="ad5d6846e98e59c37dcc3dc9958d53966"></a>
virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#ad5d6846e98e59c37dcc3dc9958d53966">~PCLBase</a> ()</td></tr>
<tr class="memdesc:ad5d6846e98e59c37dcc3dc9958d53966 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor. <br /></td></tr>
<tr class="separator:ad5d6846e98e59c37dcc3dc9958d53966 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1952d7101f3942bac3b69ed55c1ca7ea inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#a1952d7101f3942bac3b69ed55c1ca7ea">setInputCloud</a> (const PointCloudConstPtr &amp;cloud)</td></tr>
<tr class="memdesc:a1952d7101f3942bac3b69ed55c1ca7ea inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provide a pointer to the input dataset  <a href="classpcl_1_1_p_c_l_base.html#a1952d7101f3942bac3b69ed55c1ca7ea">更多...</a><br /></td></tr>
<tr class="separator:a1952d7101f3942bac3b69ed55c1ca7ea inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8cd745c4f7a792212f4fc3720b9d46ea inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="a8cd745c4f7a792212f4fc3720b9d46ea"></a>
PointCloudConstPtr const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#a8cd745c4f7a792212f4fc3720b9d46ea">getInputCloud</a> () const</td></tr>
<tr class="memdesc:a8cd745c4f7a792212f4fc3720b9d46ea inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a pointer to the input point cloud dataset. <br /></td></tr>
<tr class="separator:a8cd745c4f7a792212f4fc3720b9d46ea inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab219359de6eb34c9d51e2e976dd1a0d1 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#ab219359de6eb34c9d51e2e976dd1a0d1">setIndices</a> (const IndicesPtr &amp;indices)</td></tr>
<tr class="memdesc:ab219359de6eb34c9d51e2e976dd1a0d1 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provide a pointer to the vector of indices that represents the input data.  <a href="classpcl_1_1_p_c_l_base.html#ab219359de6eb34c9d51e2e976dd1a0d1">更多...</a><br /></td></tr>
<tr class="separator:ab219359de6eb34c9d51e2e976dd1a0d1 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a436c68c74b31e4dd00000adfbb11ca7c inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#a436c68c74b31e4dd00000adfbb11ca7c">setIndices</a> (const IndicesConstPtr &amp;indices)</td></tr>
<tr class="memdesc:a436c68c74b31e4dd00000adfbb11ca7c inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provide a pointer to the vector of indices that represents the input data.  <a href="classpcl_1_1_p_c_l_base.html#a436c68c74b31e4dd00000adfbb11ca7c">更多...</a><br /></td></tr>
<tr class="separator:a436c68c74b31e4dd00000adfbb11ca7c inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af9cc90d8364ce968566f75800d3773ca inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#af9cc90d8364ce968566f75800d3773ca">setIndices</a> (const PointIndicesConstPtr &amp;indices)</td></tr>
<tr class="memdesc:af9cc90d8364ce968566f75800d3773ca inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provide a pointer to the vector of indices that represents the input data.  <a href="classpcl_1_1_p_c_l_base.html#af9cc90d8364ce968566f75800d3773ca">更多...</a><br /></td></tr>
<tr class="separator:af9cc90d8364ce968566f75800d3773ca inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a930c7a6375fdf65ff8cfdb4eb4a6d996 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#a930c7a6375fdf65ff8cfdb4eb4a6d996">setIndices</a> (size_t row_start, size_t col_start, size_t nb_rows, size_t nb_cols)</td></tr>
<tr class="memdesc:a930c7a6375fdf65ff8cfdb4eb4a6d996 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the indices for the points laying within an interest region of the point cloud.  <a href="classpcl_1_1_p_c_l_base.html#a930c7a6375fdf65ff8cfdb4eb4a6d996">更多...</a><br /></td></tr>
<tr class="separator:a930c7a6375fdf65ff8cfdb4eb4a6d996 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a058753dd4de73d3d0062fe2e452fba3c inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="a058753dd4de73d3d0062fe2e452fba3c"></a>
IndicesPtr const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#a058753dd4de73d3d0062fe2e452fba3c">getIndices</a> ()</td></tr>
<tr class="memdesc:a058753dd4de73d3d0062fe2e452fba3c inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a pointer to the vector of indices used. <br /></td></tr>
<tr class="separator:a058753dd4de73d3d0062fe2e452fba3c inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acae187b37230758959572ceb1e6e2045 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="acae187b37230758959572ceb1e6e2045"></a>
IndicesConstPtr const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#acae187b37230758959572ceb1e6e2045">getIndices</a> () const</td></tr>
<tr class="memdesc:acae187b37230758959572ceb1e6e2045 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a pointer to the vector of indices used. <br /></td></tr>
<tr class="separator:acae187b37230758959572ceb1e6e2045 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af7335fedb0af0930b9d1dedcb54ba201 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#af7335fedb0af0930b9d1dedcb54ba201">operator[]</a> (size_t pos) const</td></tr>
<tr class="memdesc:af7335fedb0af0930b9d1dedcb54ba201 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Override <a class="el" href="classpcl_1_1_point_cloud.html" title="PointCloud represents the base class in PCL for storing collections of 3D points.">PointCloud</a> operator[] to shorten code  <a href="classpcl_1_1_p_c_l_base.html#af7335fedb0af0930b9d1dedcb54ba201">更多...</a><br /></td></tr>
<tr class="separator:af7335fedb0af0930b9d1dedcb54ba201 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-types"></a>
Protected 类型</h2></td></tr>
<tr class="memitem:ae5e0ee1b9f1027f14817c56bdebcab72"><td class="memItemLeft" align="right" valign="top"><a id="ae5e0ee1b9f1027f14817c56bdebcab72"></a>
typedef <a class="el" href="classpcl_1_1_filter.html">Filter</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::<a class="el" href="classpcl_1_1_point_cloud.html">PointCloud</a>&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloud</b></td></tr>
<tr class="separator:ae5e0ee1b9f1027f14817c56bdebcab72"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6e35907a5d4d06c1c65078ae0b13d7e5"><td class="memItemLeft" align="right" valign="top"><a id="a6e35907a5d4d06c1c65078ae0b13d7e5"></a>
typedef PointCloud::Ptr&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudPtr</b></td></tr>
<tr class="separator:a6e35907a5d4d06c1c65078ae0b13d7e5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a23ddd643d89dc91d17b23de0b856b706"><td class="memItemLeft" align="right" valign="top"><a id="a23ddd643d89dc91d17b23de0b856b706"></a>
typedef PointCloud::ConstPtr&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudConstPtr</b></td></tr>
<tr class="separator:a23ddd643d89dc91d17b23de0b856b706"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a604be24e2b5a139f47741f78bb329b8b"><td class="memItemLeft" align="right" valign="top"><a id="a604be24e2b5a139f47741f78bb329b8b"></a>
typedef boost::shared_ptr&lt; <a class="el" href="classpcl_1_1_voxel_grid.html">VoxelGrid</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>Ptr</b></td></tr>
<tr class="separator:a604be24e2b5a139f47741f78bb329b8b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7c090164ea30006051c2d2f284298579"><td class="memItemLeft" align="right" valign="top"><a id="a7c090164ea30006051c2d2f284298579"></a>
typedef boost::shared_ptr&lt; const <a class="el" href="classpcl_1_1_voxel_grid.html">VoxelGrid</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>ConstPtr</b></td></tr>
<tr class="separator:a7c090164ea30006051c2d2f284298579"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a342a8c748e751186f42fcc874f80c586"><td class="memItemLeft" align="right" valign="top"><a id="a342a8c748e751186f42fcc874f80c586"></a>
typedef <a class="el" href="structpcl_1_1traits_1_1field_list.html">pcl::traits::fieldList</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::type&#160;</td><td class="memItemRight" valign="bottom"><b>FieldList</b></td></tr>
<tr class="separator:a342a8c748e751186f42fcc874f80c586"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected 成员函数</h2></td></tr>
<tr class="memitem:ac5e7d3bb2b3e7c05dbc45ba44a443297"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_voxel_grid.html#ac5e7d3bb2b3e7c05dbc45ba44a443297">applyFilter</a> (<a class="el" href="classpcl_1_1_point_cloud.html">PointCloud</a> &amp;output)</td></tr>
<tr class="memdesc:ac5e7d3bb2b3e7c05dbc45ba44a443297"><td class="mdescLeft">&#160;</td><td class="mdescRight">Downsample a Point <a class="el" href="class_cloud.html" title="A wrapper which allows to use any implementation of cloud provided by a third-party library.">Cloud</a> using a voxelized grid approach  <a href="classpcl_1_1_voxel_grid.html#ac5e7d3bb2b3e7c05dbc45ba44a443297">更多...</a><br /></td></tr>
<tr class="separator:ac5e7d3bb2b3e7c05dbc45ba44a443297"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_methods_classpcl_1_1_filter"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classpcl_1_1_filter')"><img src="closed.png" alt="-"/>&#160;Protected 成员函数 继承自 <a class="el" href="classpcl_1_1_filter.html">pcl::Filter&lt; PointT &gt;</a></td></tr>
<tr class="memitem:a71040236d2c11da75b715d6d6bf5ba9d inherit pro_methods_classpcl_1_1_filter"><td class="memItemLeft" align="right" valign="top"><a id="a71040236d2c11da75b715d6d6bf5ba9d"></a>
const std::string &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_filter.html#a71040236d2c11da75b715d6d6bf5ba9d">getClassName</a> () const</td></tr>
<tr class="memdesc:a71040236d2c11da75b715d6d6bf5ba9d inherit pro_methods_classpcl_1_1_filter"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a string representation of the name of this class. <br /></td></tr>
<tr class="separator:a71040236d2c11da75b715d6d6bf5ba9d inherit pro_methods_classpcl_1_1_filter"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_methods_classpcl_1_1_p_c_l_base"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classpcl_1_1_p_c_l_base')"><img src="closed.png" alt="-"/>&#160;Protected 成员函数 继承自 <a class="el" href="classpcl_1_1_p_c_l_base.html">pcl::PCLBase&lt; PointT &gt;</a></td></tr>
<tr class="memitem:acceb20854934f4cf77e266eb5a44d4f0 inherit pro_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#acceb20854934f4cf77e266eb5a44d4f0">initCompute</a> ()</td></tr>
<tr class="memdesc:acceb20854934f4cf77e266eb5a44d4f0 inherit pro_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method should get called before starting the actual computation.  <a href="classpcl_1_1_p_c_l_base.html#acceb20854934f4cf77e266eb5a44d4f0">更多...</a><br /></td></tr>
<tr class="separator:acceb20854934f4cf77e266eb5a44d4f0 inherit pro_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afc426c4eebb94b7734d4fa556bff1420 inherit pro_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="afc426c4eebb94b7734d4fa556bff1420"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#afc426c4eebb94b7734d4fa556bff1420">deinitCompute</a> ()</td></tr>
<tr class="memdesc:afc426c4eebb94b7734d4fa556bff1420 inherit pro_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method should get called after finishing the actual computation. <br /></td></tr>
<tr class="separator:afc426c4eebb94b7734d4fa556bff1420 inherit pro_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
Protected 属性</h2></td></tr>
<tr class="memitem:ad6e7aa7d90c1b75ab43d38c48dcff799"><td class="memItemLeft" align="right" valign="top"><a id="ad6e7aa7d90c1b75ab43d38c48dcff799"></a>
Eigen::Vector4f&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_voxel_grid.html#ad6e7aa7d90c1b75ab43d38c48dcff799">leaf_size_</a></td></tr>
<tr class="memdesc:ad6e7aa7d90c1b75ab43d38c48dcff799"><td class="mdescLeft">&#160;</td><td class="mdescRight">The size of a leaf. <br /></td></tr>
<tr class="separator:ad6e7aa7d90c1b75ab43d38c48dcff799"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aed2cf27b47ad2059be72e03326d4ff00"><td class="memItemLeft" align="right" valign="top"><a id="aed2cf27b47ad2059be72e03326d4ff00"></a>
Eigen::Array4f&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_voxel_grid.html#aed2cf27b47ad2059be72e03326d4ff00">inverse_leaf_size_</a></td></tr>
<tr class="memdesc:aed2cf27b47ad2059be72e03326d4ff00"><td class="mdescLeft">&#160;</td><td class="mdescRight">Internal leaf sizes stored as 1/leaf_size_ for efficiency reasons. <br /></td></tr>
<tr class="separator:aed2cf27b47ad2059be72e03326d4ff00"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1789763b2f3b17cce937b9902cfb6175"><td class="memItemLeft" align="right" valign="top"><a id="a1789763b2f3b17cce937b9902cfb6175"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_voxel_grid.html#a1789763b2f3b17cce937b9902cfb6175">downsample_all_data_</a></td></tr>
<tr class="memdesc:a1789763b2f3b17cce937b9902cfb6175"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set to true if all fields need to be downsampled, or false if just XYZ. <br /></td></tr>
<tr class="separator:a1789763b2f3b17cce937b9902cfb6175"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a73e0f889875e09c1990ec088af6c82c4"><td class="memItemLeft" align="right" valign="top"><a id="a73e0f889875e09c1990ec088af6c82c4"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_voxel_grid.html#a73e0f889875e09c1990ec088af6c82c4">save_leaf_layout_</a></td></tr>
<tr class="memdesc:a73e0f889875e09c1990ec088af6c82c4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set to true if leaf layout information needs to be saved in <em>leaf_layout_</em>. <br /></td></tr>
<tr class="separator:a73e0f889875e09c1990ec088af6c82c4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a33222904207e6304aa3fbd2b31a9ac84"><td class="memItemLeft" align="right" valign="top"><a id="a33222904207e6304aa3fbd2b31a9ac84"></a>
std::vector&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_voxel_grid.html#a33222904207e6304aa3fbd2b31a9ac84">leaf_layout_</a></td></tr>
<tr class="memdesc:a33222904207e6304aa3fbd2b31a9ac84"><td class="mdescLeft">&#160;</td><td class="mdescRight">The leaf layout information for fast access to cells relative to current position <br /></td></tr>
<tr class="separator:a33222904207e6304aa3fbd2b31a9ac84"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa920d3e9fa0d03643423ade34f6ec986"><td class="memItemLeft" align="right" valign="top"><a id="aa920d3e9fa0d03643423ade34f6ec986"></a>
Eigen::Vector4i&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_voxel_grid.html#aa920d3e9fa0d03643423ade34f6ec986">min_b_</a></td></tr>
<tr class="memdesc:aa920d3e9fa0d03643423ade34f6ec986"><td class="mdescLeft">&#160;</td><td class="mdescRight">The minimum and maximum bin coordinates, the number of divisions, and the division multiplier. <br /></td></tr>
<tr class="separator:aa920d3e9fa0d03643423ade34f6ec986"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a24480b0cc73084e2d62fdce34dd5fd03"><td class="memItemLeft" align="right" valign="top"><a id="a24480b0cc73084e2d62fdce34dd5fd03"></a>
Eigen::Vector4i&#160;</td><td class="memItemRight" valign="bottom"><b>max_b_</b></td></tr>
<tr class="separator:a24480b0cc73084e2d62fdce34dd5fd03"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afb401929b5b3578a402a5fdcc5879feb"><td class="memItemLeft" align="right" valign="top"><a id="afb401929b5b3578a402a5fdcc5879feb"></a>
Eigen::Vector4i&#160;</td><td class="memItemRight" valign="bottom"><b>div_b_</b></td></tr>
<tr class="separator:afb401929b5b3578a402a5fdcc5879feb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a37087b1124f5c9617f1f6ac5a0b60203"><td class="memItemLeft" align="right" valign="top"><a id="a37087b1124f5c9617f1f6ac5a0b60203"></a>
Eigen::Vector4i&#160;</td><td class="memItemRight" valign="bottom"><b>divb_mul_</b></td></tr>
<tr class="separator:a37087b1124f5c9617f1f6ac5a0b60203"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac7af4d73e7dd960d1d7c725a6f3fe9bc"><td class="memItemLeft" align="right" valign="top"><a id="ac7af4d73e7dd960d1d7c725a6f3fe9bc"></a>
std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_voxel_grid.html#ac7af4d73e7dd960d1d7c725a6f3fe9bc">filter_field_name_</a></td></tr>
<tr class="memdesc:ac7af4d73e7dd960d1d7c725a6f3fe9bc"><td class="mdescLeft">&#160;</td><td class="mdescRight">The desired user filter field name. <br /></td></tr>
<tr class="separator:ac7af4d73e7dd960d1d7c725a6f3fe9bc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad8929163e5e80d86881a9ad123fa468e"><td class="memItemLeft" align="right" valign="top"><a id="ad8929163e5e80d86881a9ad123fa468e"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_voxel_grid.html#ad8929163e5e80d86881a9ad123fa468e">filter_limit_min_</a></td></tr>
<tr class="memdesc:ad8929163e5e80d86881a9ad123fa468e"><td class="mdescLeft">&#160;</td><td class="mdescRight">The minimum allowed filter value a point will be considered from. <br /></td></tr>
<tr class="separator:ad8929163e5e80d86881a9ad123fa468e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaec915dae701cca04f4598a818b7a02d"><td class="memItemLeft" align="right" valign="top"><a id="aaec915dae701cca04f4598a818b7a02d"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_voxel_grid.html#aaec915dae701cca04f4598a818b7a02d">filter_limit_max_</a></td></tr>
<tr class="memdesc:aaec915dae701cca04f4598a818b7a02d"><td class="mdescLeft">&#160;</td><td class="mdescRight">The maximum allowed filter value a point will be considered from. <br /></td></tr>
<tr class="separator:aaec915dae701cca04f4598a818b7a02d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8115c47d971f0af7a11c4148741f1171"><td class="memItemLeft" align="right" valign="top"><a id="a8115c47d971f0af7a11c4148741f1171"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_voxel_grid.html#a8115c47d971f0af7a11c4148741f1171">filter_limit_negative_</a></td></tr>
<tr class="memdesc:a8115c47d971f0af7a11c4148741f1171"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set to true if we want to return the data outside (<em>filter_limit_min_</em>;<em>filter_limit_max_</em>). Default: false. <br /></td></tr>
<tr class="separator:a8115c47d971f0af7a11c4148741f1171"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a24a0c685d3d211e998e927766553b8e3"><td class="memItemLeft" align="right" valign="top"><a id="a24a0c685d3d211e998e927766553b8e3"></a>
unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_voxel_grid.html#a24a0c685d3d211e998e927766553b8e3">min_points_per_voxel_</a></td></tr>
<tr class="memdesc:a24a0c685d3d211e998e927766553b8e3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Minimum number of points per voxel for the centroid to be computed <br /></td></tr>
<tr class="separator:a24a0c685d3d211e998e927766553b8e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_attribs_classpcl_1_1_filter"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classpcl_1_1_filter')"><img src="closed.png" alt="-"/>&#160;Protected 属性 继承自 <a class="el" href="classpcl_1_1_filter.html">pcl::Filter&lt; PointT &gt;</a></td></tr>
<tr class="memitem:ae83ccb695ed263cfc64c224210a31936 inherit pro_attribs_classpcl_1_1_filter"><td class="memItemLeft" align="right" valign="top"><a id="ae83ccb695ed263cfc64c224210a31936"></a>
IndicesPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_filter.html#ae83ccb695ed263cfc64c224210a31936">removed_indices_</a></td></tr>
<tr class="memdesc:ae83ccb695ed263cfc64c224210a31936 inherit pro_attribs_classpcl_1_1_filter"><td class="mdescLeft">&#160;</td><td class="mdescRight">Indices of the points that are removed <br /></td></tr>
<tr class="separator:ae83ccb695ed263cfc64c224210a31936 inherit pro_attribs_classpcl_1_1_filter"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad700c7ab56dc82ad8811b87e9f793751 inherit pro_attribs_classpcl_1_1_filter"><td class="memItemLeft" align="right" valign="top"><a id="ad700c7ab56dc82ad8811b87e9f793751"></a>
std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_filter.html#ad700c7ab56dc82ad8811b87e9f793751">filter_name_</a></td></tr>
<tr class="memdesc:ad700c7ab56dc82ad8811b87e9f793751 inherit pro_attribs_classpcl_1_1_filter"><td class="mdescLeft">&#160;</td><td class="mdescRight">The filter name. <br /></td></tr>
<tr class="separator:ad700c7ab56dc82ad8811b87e9f793751 inherit pro_attribs_classpcl_1_1_filter"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a77b899631add791703f5d615f085bede inherit pro_attribs_classpcl_1_1_filter"><td class="memItemLeft" align="right" valign="top"><a id="a77b899631add791703f5d615f085bede"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_filter.html#a77b899631add791703f5d615f085bede">extract_removed_indices_</a></td></tr>
<tr class="memdesc:a77b899631add791703f5d615f085bede inherit pro_attribs_classpcl_1_1_filter"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set to true if we want to return the indices of the removed points. <br /></td></tr>
<tr class="separator:a77b899631add791703f5d615f085bede inherit pro_attribs_classpcl_1_1_filter"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_attribs_classpcl_1_1_p_c_l_base"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classpcl_1_1_p_c_l_base')"><img src="closed.png" alt="-"/>&#160;Protected 属性 继承自 <a class="el" href="classpcl_1_1_p_c_l_base.html">pcl::PCLBase&lt; PointT &gt;</a></td></tr>
<tr class="memitem:a09c70d8e06e3fb4f07903fe6f8d67869 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="a09c70d8e06e3fb4f07903fe6f8d67869"></a>
PointCloudConstPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a></td></tr>
<tr class="memdesc:a09c70d8e06e3fb4f07903fe6f8d67869 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">The input point cloud dataset. <br /></td></tr>
<tr class="separator:a09c70d8e06e3fb4f07903fe6f8d67869 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaee847c8a517ebf365bad2cb182a6626 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="aaee847c8a517ebf365bad2cb182a6626"></a>
IndicesPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#aaee847c8a517ebf365bad2cb182a6626">indices_</a></td></tr>
<tr class="memdesc:aaee847c8a517ebf365bad2cb182a6626 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">A pointer to the vector of point indices to use. <br /></td></tr>
<tr class="separator:aaee847c8a517ebf365bad2cb182a6626 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ada1eadb824d34ca9206a86343d9760bb inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="ada1eadb824d34ca9206a86343d9760bb"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#ada1eadb824d34ca9206a86343d9760bb">use_indices_</a></td></tr>
<tr class="memdesc:ada1eadb824d34ca9206a86343d9760bb inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set to true if point indices are used. <br /></td></tr>
<tr class="separator:ada1eadb824d34ca9206a86343d9760bb inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adadb0299f144528020ed558af6879662 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="adadb0299f144528020ed558af6879662"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#adadb0299f144528020ed558af6879662">fake_indices_</a></td></tr>
<tr class="memdesc:adadb0299f144528020ed558af6879662 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">If no set of indices are given, we construct a set of fake indices that mimic the input <a class="el" href="classpcl_1_1_point_cloud.html" title="PointCloud represents the base class in PCL for storing collections of 3D points.">PointCloud</a>. <br /></td></tr>
<tr class="separator:adadb0299f144528020ed558af6879662 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
额外继承的成员函数</h2></td></tr>
<tr class="inherit_header pub_types_classpcl_1_1_filter"><td colspan="2" onclick="javascript:toggleInherit('pub_types_classpcl_1_1_filter')"><img src="closed.png" alt="-"/>&#160;Public 类型 继承自 <a class="el" href="classpcl_1_1_filter.html">pcl::Filter&lt; PointT &gt;</a></td></tr>
<tr class="memitem:a719a1ef5a8fc3b7f4a651a8bae51571b inherit pub_types_classpcl_1_1_filter"><td class="memItemLeft" align="right" valign="top"><a id="a719a1ef5a8fc3b7f4a651a8bae51571b"></a>
typedef boost::shared_ptr&lt; <a class="el" href="classpcl_1_1_filter.html">Filter</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>Ptr</b></td></tr>
<tr class="separator:a719a1ef5a8fc3b7f4a651a8bae51571b inherit pub_types_classpcl_1_1_filter"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a01b992cf70e997979d7f653226a60ddd inherit pub_types_classpcl_1_1_filter"><td class="memItemLeft" align="right" valign="top"><a id="a01b992cf70e997979d7f653226a60ddd"></a>
typedef boost::shared_ptr&lt; const <a class="el" href="classpcl_1_1_filter.html">Filter</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>ConstPtr</b></td></tr>
<tr class="separator:a01b992cf70e997979d7f653226a60ddd inherit pub_types_classpcl_1_1_filter"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4f1d68bbc5f1f6b852b48b95e4673cfb inherit pub_types_classpcl_1_1_filter"><td class="memItemLeft" align="right" valign="top"><a id="a4f1d68bbc5f1f6b852b48b95e4673cfb"></a>
typedef <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloud</b></td></tr>
<tr class="separator:a4f1d68bbc5f1f6b852b48b95e4673cfb inherit pub_types_classpcl_1_1_filter"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a335eb506b145ec1a09acc945b775246d inherit pub_types_classpcl_1_1_filter"><td class="memItemLeft" align="right" valign="top"><a id="a335eb506b145ec1a09acc945b775246d"></a>
typedef PointCloud::Ptr&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudPtr</b></td></tr>
<tr class="separator:a335eb506b145ec1a09acc945b775246d inherit pub_types_classpcl_1_1_filter"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5796101c9166820fac3a5ca961bde255 inherit pub_types_classpcl_1_1_filter"><td class="memItemLeft" align="right" valign="top"><a id="a5796101c9166820fac3a5ca961bde255"></a>
typedef PointCloud::ConstPtr&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudConstPtr</b></td></tr>
<tr class="separator:a5796101c9166820fac3a5ca961bde255 inherit pub_types_classpcl_1_1_filter"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_types_classpcl_1_1_p_c_l_base"><td colspan="2" onclick="javascript:toggleInherit('pub_types_classpcl_1_1_p_c_l_base')"><img src="closed.png" alt="-"/>&#160;Public 类型 继承自 <a class="el" href="classpcl_1_1_p_c_l_base.html">pcl::PCLBase&lt; PointT &gt;</a></td></tr>
<tr class="memitem:ae2f6f6863a73337858b7a7a054eaae4f inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="ae2f6f6863a73337858b7a7a054eaae4f"></a>
typedef <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloud</b></td></tr>
<tr class="separator:ae2f6f6863a73337858b7a7a054eaae4f inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab84dd662cda89edb882fe5307b2136ea inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="ab84dd662cda89edb882fe5307b2136ea"></a>
typedef PointCloud::Ptr&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudPtr</b></td></tr>
<tr class="separator:ab84dd662cda89edb882fe5307b2136ea inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac8326513fad0680b6993e2f1a79a6af4 inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="ac8326513fad0680b6993e2f1a79a6af4"></a>
typedef PointCloud::ConstPtr&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudConstPtr</b></td></tr>
<tr class="separator:ac8326513fad0680b6993e2f1a79a6af4 inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae51eae0c7b3e0b7178f4894dff90660a inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="ae51eae0c7b3e0b7178f4894dff90660a"></a>
typedef boost::shared_ptr&lt; <a class="el" href="structpcl_1_1_point_indices.html">PointIndices</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>PointIndicesPtr</b></td></tr>
<tr class="separator:ae51eae0c7b3e0b7178f4894dff90660a inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a51771056fb4ab8c448a11157acbe2ee0 inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="a51771056fb4ab8c448a11157acbe2ee0"></a>
typedef boost::shared_ptr&lt; <a class="el" href="structpcl_1_1_point_indices.html">PointIndices</a> const  &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>PointIndicesConstPtr</b></td></tr>
<tr class="separator:a51771056fb4ab8c448a11157acbe2ee0 inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">详细描述</h2>
<div class="textblock"><h3>template&lt;typename PointT&gt;<br />
class pcl::VoxelGrid&lt; PointT &gt;</h3>

<p><a class="el" href="classpcl_1_1_voxel_grid.html" title="VoxelGrid assembles a local 3D grid over a given PointCloud, and downsamples + filters the data.">VoxelGrid</a> assembles a local 3D grid over a given <a class="el" href="classpcl_1_1_point_cloud.html" title="PointCloud represents the base class in PCL for storing collections of 3D points.">PointCloud</a>, and downsamples + filters the data. </p>
<p>The <a class="el" href="classpcl_1_1_voxel_grid.html" title="VoxelGrid assembles a local 3D grid over a given PointCloud, and downsamples + filters the data.">VoxelGrid</a> class creates a <em>3D voxel grid</em> (think about a voxel grid as a set of tiny 3D boxes in space) over the input point cloud data. Then, in each <em>voxel</em> (i.e., 3D box), all the points present will be approximated (i.e., <em>downsampled</em>) with their centroid. This approach is a bit slower than approximating them with the center of the voxel, but it represents the underlying surface more accurately.</p>
<dl class="section author"><dt>作者</dt><dd>Radu B. Rusu, Bastian Steder </dd></dl>
</div><h2 class="groupheader">成员函数说明</h2>
<a id="ac5e7d3bb2b3e7c05dbc45ba44a443297"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac5e7d3bb2b3e7c05dbc45ba44a443297">&#9670;&nbsp;</a></span>applyFilter()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_voxel_grid.html">pcl::VoxelGrid</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::applyFilter </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classpcl_1_1_point_cloud.html">PointCloud</a> &amp;&#160;</td>
          <td class="paramname"><em>output</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Downsample a Point <a class="el" href="class_cloud.html" title="A wrapper which allows to use any implementation of cloud provided by a third-party library.">Cloud</a> using a voxelized grid approach </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[out]</td><td class="paramname">output</td><td>the resultant point cloud message </td></tr>
  </table>
  </dd>
</dl>

<p>实现了 <a class="el" href="classpcl_1_1_filter.html#a1f703f36f50546e950f03af2453da623">pcl::Filter&lt; PointT &gt;</a>.</p>

<p>被 <a class="el" href="classpcl_1_1_voxel_grid_covariance.html#a1a4a22ba39ce7c83f76d7f31c292733c">pcl::VoxelGridCovariance&lt; PointT &gt;</a> , 以及 <a class="el" href="classpcl_1_1_voxel_grid_covariance.html#a1a4a22ba39ce7c83f76d7f31c292733c">pcl::VoxelGridCovariance&lt; PointTarget &gt;</a> 重载.</p>
<div class="fragment"><div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;{</div>
<div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;  <span class="comment">// Has the input dataset been set already?</span></div>
<div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;  <span class="keywordflow">if</span> (!<a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>)</div>
<div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;  {</div>
<div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;    PCL_WARN (<span class="stringliteral">&quot;[pcl::%s::applyFilter] No input dataset given!\n&quot;</span>, <a class="code" href="classpcl_1_1_filter.html#a71040236d2c11da75b715d6d6bf5ba9d">getClassName</a> ().c_str ());</div>
<div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;    output.<a class="code" href="classpcl_1_1_point_cloud.html#a2185a6453f8ad905d7bdf7b45754a160">width</a> = output.<a class="code" href="classpcl_1_1_point_cloud.html#a4f34b45220c57f96607513ffad0d9582">height</a> = 0;</div>
<div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;    output.<a class="code" href="classpcl_1_1_point_cloud.html#af16a62638198313b9c093127c492c884">points</a>.clear ();</div>
<div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;    <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;  }</div>
<div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160; </div>
<div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;  <span class="comment">// Copy the header (and thus the frame_id) + allocate enough space for points</span></div>
<div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;  output.<a class="code" href="classpcl_1_1_point_cloud.html#a4f34b45220c57f96607513ffad0d9582">height</a>       = 1;                    <span class="comment">// downsampling breaks the organized structure</span></div>
<div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;  output.<a class="code" href="classpcl_1_1_point_cloud.html#a3ca88d8ebf6f4f35acbc31cdfb38aa94">is_dense</a>     = <span class="keyword">true</span>;                 <span class="comment">// we filter out invalid points</span></div>
<div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160; </div>
<div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;  Eigen::Vector4f min_p, max_p;</div>
<div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;  <span class="comment">// Get the minimum and maximum dimensions</span></div>
<div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;  <span class="keywordflow">if</span> (!<a class="code" href="classpcl_1_1_voxel_grid.html#ac7af4d73e7dd960d1d7c725a6f3fe9bc">filter_field_name_</a>.empty ()) <span class="comment">// If we don&#39;t want to process the entire cloud...</span></div>
<div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;    getMinMax3D&lt;PointT&gt; (<a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>, *<a class="code" href="classpcl_1_1_p_c_l_base.html#aaee847c8a517ebf365bad2cb182a6626">indices_</a>, <a class="code" href="classpcl_1_1_voxel_grid.html#ac7af4d73e7dd960d1d7c725a6f3fe9bc">filter_field_name_</a>, <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> (<a class="code" href="classpcl_1_1_voxel_grid.html#ad8929163e5e80d86881a9ad123fa468e">filter_limit_min_</a>), <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> (<a class="code" href="classpcl_1_1_voxel_grid.html#aaec915dae701cca04f4598a818b7a02d">filter_limit_max_</a>), min_p, max_p, <a class="code" href="classpcl_1_1_voxel_grid.html#a8115c47d971f0af7a11c4148741f1171">filter_limit_negative_</a>);</div>
<div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;  <span class="keywordflow">else</span></div>
<div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;    getMinMax3D&lt;PointT&gt; (*<a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>, *<a class="code" href="classpcl_1_1_p_c_l_base.html#aaee847c8a517ebf365bad2cb182a6626">indices_</a>, min_p, max_p);</div>
<div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160; </div>
<div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;  <span class="comment">// Check that the leaf size is not too small, given the size of the data</span></div>
<div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;  int64_t dx = <span class="keyword">static_cast&lt;</span>int64_t<span class="keyword">&gt;</span>((max_p[0] - min_p[0]) * <a class="code" href="classpcl_1_1_voxel_grid.html#aed2cf27b47ad2059be72e03326d4ff00">inverse_leaf_size_</a>[0])+1;</div>
<div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;  int64_t dy = <span class="keyword">static_cast&lt;</span>int64_t<span class="keyword">&gt;</span>((max_p[1] - min_p[1]) * <a class="code" href="classpcl_1_1_voxel_grid.html#aed2cf27b47ad2059be72e03326d4ff00">inverse_leaf_size_</a>[1])+1;</div>
<div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;  int64_t dz = <span class="keyword">static_cast&lt;</span>int64_t<span class="keyword">&gt;</span>((max_p[2] - min_p[2]) * <a class="code" href="classpcl_1_1_voxel_grid.html#aed2cf27b47ad2059be72e03326d4ff00">inverse_leaf_size_</a>[2])+1;</div>
<div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160; </div>
<div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;  <span class="keywordflow">if</span> ((dx*dy*dz) &gt; <span class="keyword">static_cast&lt;</span>int64_t<span class="keyword">&gt;</span>(std::numeric_limits&lt;int32_t&gt;::max()))</div>
<div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;  {</div>
<div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;    PCL_WARN(<span class="stringliteral">&quot;[pcl::%s::applyFilter] Leaf size is too small for the input dataset. Integer indices would overflow.&quot;</span>, <a class="code" href="classpcl_1_1_filter.html#a71040236d2c11da75b715d6d6bf5ba9d">getClassName</a>().c_str());</div>
<div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;    output = *<a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>;</div>
<div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;    <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;  }</div>
<div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160; </div>
<div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;  <span class="comment">// Compute the minimum and maximum bounding box values</span></div>
<div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;  <a class="code" href="classpcl_1_1_voxel_grid.html#aa920d3e9fa0d03643423ade34f6ec986">min_b_</a>[0] = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (floor (min_p[0] * <a class="code" href="classpcl_1_1_voxel_grid.html#aed2cf27b47ad2059be72e03326d4ff00">inverse_leaf_size_</a>[0]));</div>
<div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;  max_b_[0] = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (floor (max_p[0] * <a class="code" href="classpcl_1_1_voxel_grid.html#aed2cf27b47ad2059be72e03326d4ff00">inverse_leaf_size_</a>[0]));</div>
<div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;  <a class="code" href="classpcl_1_1_voxel_grid.html#aa920d3e9fa0d03643423ade34f6ec986">min_b_</a>[1] = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (floor (min_p[1] * <a class="code" href="classpcl_1_1_voxel_grid.html#aed2cf27b47ad2059be72e03326d4ff00">inverse_leaf_size_</a>[1]));</div>
<div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;  max_b_[1] = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (floor (max_p[1] * <a class="code" href="classpcl_1_1_voxel_grid.html#aed2cf27b47ad2059be72e03326d4ff00">inverse_leaf_size_</a>[1]));</div>
<div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;  <a class="code" href="classpcl_1_1_voxel_grid.html#aa920d3e9fa0d03643423ade34f6ec986">min_b_</a>[2] = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (floor (min_p[2] * <a class="code" href="classpcl_1_1_voxel_grid.html#aed2cf27b47ad2059be72e03326d4ff00">inverse_leaf_size_</a>[2]));</div>
<div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;  max_b_[2] = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (floor (max_p[2] * <a class="code" href="classpcl_1_1_voxel_grid.html#aed2cf27b47ad2059be72e03326d4ff00">inverse_leaf_size_</a>[2]));</div>
<div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160; </div>
<div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;  <span class="comment">// Compute the number of divisions needed along all axis</span></div>
<div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;  div_b_ = max_b_ - <a class="code" href="classpcl_1_1_voxel_grid.html#aa920d3e9fa0d03643423ade34f6ec986">min_b_</a> + Eigen::Vector4i::Ones ();</div>
<div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;  div_b_[3] = 0;</div>
<div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160; </div>
<div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;  <span class="comment">// Set up the division multiplier</span></div>
<div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;  divb_mul_ = Eigen::Vector4i (1, div_b_[0], div_b_[0] * div_b_[1], 0);</div>
<div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160; </div>
<div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;  <span class="comment">// Storage for mapping leaf and pointcloud indexes</span></div>
<div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;  std::vector&lt;cloud_point_index_idx&gt; index_vector;</div>
<div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;  index_vector.reserve (<a class="code" href="classpcl_1_1_p_c_l_base.html#aaee847c8a517ebf365bad2cb182a6626">indices_</a>-&gt;size ());</div>
<div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160; </div>
<div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;  <span class="comment">// If we don&#39;t want to process the entire cloud, but rather filter points far away from the viewpoint first...</span></div>
<div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;  <span class="keywordflow">if</span> (!<a class="code" href="classpcl_1_1_voxel_grid.html#ac7af4d73e7dd960d1d7c725a6f3fe9bc">filter_field_name_</a>.empty ())</div>
<div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;  {</div>
<div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;    <span class="comment">// Get the distance field index</span></div>
<div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;    std::vector&lt;pcl::PCLPointField&gt; fields;</div>
<div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;    <span class="keywordtype">int</span> distance_idx = <a class="code" href="group__common.html#ga2bc4b9a4e25de1d0b00db4e41f0ad682">pcl::getFieldIndex</a> (*<a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>, <a class="code" href="classpcl_1_1_voxel_grid.html#ac7af4d73e7dd960d1d7c725a6f3fe9bc">filter_field_name_</a>, fields);</div>
<div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;    <span class="keywordflow">if</span> (distance_idx == -1)</div>
<div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;      PCL_WARN (<span class="stringliteral">&quot;[pcl::%s::applyFilter] Invalid filter field name. Index is %d.\n&quot;</span>, <a class="code" href="classpcl_1_1_filter.html#a71040236d2c11da75b715d6d6bf5ba9d">getClassName</a> ().c_str (), distance_idx);</div>
<div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160; </div>
<div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;    <span class="comment">// First pass: go over all points and insert them into the index_vector vector</span></div>
<div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;    <span class="comment">// with calculated idx. Points with the same idx value will contribute to the</span></div>
<div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;    <span class="comment">// same point of resulting CloudPoint</span></div>
<div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;    <span class="keywordflow">for</span> (std::vector&lt;int&gt;::const_iterator it = <a class="code" href="classpcl_1_1_p_c_l_base.html#aaee847c8a517ebf365bad2cb182a6626">indices_</a>-&gt;begin (); it != <a class="code" href="classpcl_1_1_p_c_l_base.html#aaee847c8a517ebf365bad2cb182a6626">indices_</a>-&gt;end (); ++it)</div>
<div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;    {</div>
<div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;      <span class="keywordflow">if</span> (!<a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;is_dense)</div>
<div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;        <span class="comment">// Check if the point is invalid</span></div>
<div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;        <span class="keywordflow">if</span> (!pcl_isfinite (<a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;points[*it].x) || </div>
<div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;            !pcl_isfinite (<a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;points[*it].y) || </div>
<div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;            !pcl_isfinite (<a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;points[*it].z))</div>
<div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;          <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160; </div>
<div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;      <span class="comment">// Get the distance value</span></div>
<div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;      <span class="keyword">const</span> uint8_t* pt_data = <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>uint8_t*<span class="keyword">&gt;</span> (&amp;<a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;points[*it]);</div>
<div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;      <span class="keywordtype">float</span> distance_value = 0;</div>
<div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;      memcpy (&amp;distance_value, pt_data + fields[distance_idx].offset, <span class="keyword">sizeof</span> (<span class="keywordtype">float</span>));</div>
<div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160; </div>
<div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;      <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_voxel_grid.html#a8115c47d971f0af7a11c4148741f1171">filter_limit_negative_</a>)</div>
<div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;      {</div>
<div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;        <span class="comment">// Use a threshold for cutting out points which inside the interval</span></div>
<div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;        <span class="keywordflow">if</span> ((distance_value &lt; <a class="code" href="classpcl_1_1_voxel_grid.html#aaec915dae701cca04f4598a818b7a02d">filter_limit_max_</a>) &amp;&amp; (distance_value &gt; <a class="code" href="classpcl_1_1_voxel_grid.html#ad8929163e5e80d86881a9ad123fa468e">filter_limit_min_</a>))</div>
<div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;          <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;      }</div>
<div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;      <span class="keywordflow">else</span></div>
<div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;      {</div>
<div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;        <span class="comment">// Use a threshold for cutting out points which are too close/far away</span></div>
<div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;        <span class="keywordflow">if</span> ((distance_value &gt; <a class="code" href="classpcl_1_1_voxel_grid.html#aaec915dae701cca04f4598a818b7a02d">filter_limit_max_</a>) || (distance_value &lt; <a class="code" href="classpcl_1_1_voxel_grid.html#ad8929163e5e80d86881a9ad123fa468e">filter_limit_min_</a>))</div>
<div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;          <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;      }</div>
<div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;      </div>
<div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;      <span class="keywordtype">int</span> ijk0 = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (floor (<a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;points[*it].x * <a class="code" href="classpcl_1_1_voxel_grid.html#aed2cf27b47ad2059be72e03326d4ff00">inverse_leaf_size_</a>[0]) - <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> (<a class="code" href="classpcl_1_1_voxel_grid.html#aa920d3e9fa0d03643423ade34f6ec986">min_b_</a>[0]));</div>
<div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;      <span class="keywordtype">int</span> ijk1 = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (floor (<a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;points[*it].y * <a class="code" href="classpcl_1_1_voxel_grid.html#aed2cf27b47ad2059be72e03326d4ff00">inverse_leaf_size_</a>[1]) - <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> (<a class="code" href="classpcl_1_1_voxel_grid.html#aa920d3e9fa0d03643423ade34f6ec986">min_b_</a>[1]));</div>
<div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;      <span class="keywordtype">int</span> ijk2 = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (floor (<a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;points[*it].z * <a class="code" href="classpcl_1_1_voxel_grid.html#aed2cf27b47ad2059be72e03326d4ff00">inverse_leaf_size_</a>[2]) - <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> (<a class="code" href="classpcl_1_1_voxel_grid.html#aa920d3e9fa0d03643423ade34f6ec986">min_b_</a>[2]));</div>
<div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160; </div>
<div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;      <span class="comment">// Compute the centroid leaf index</span></div>
<div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;      <span class="keywordtype">int</span> idx = ijk0 * divb_mul_[0] + ijk1 * divb_mul_[1] + ijk2 * divb_mul_[2];</div>
<div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;      index_vector.push_back (<a class="code" href="structcloud__point__index__idx.html">cloud_point_index_idx</a> (<span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span> (idx), *it));</div>
<div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;    }</div>
<div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;  }</div>
<div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;  <span class="comment">// No distance filtering, process all data</span></div>
<div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;  <span class="keywordflow">else</span></div>
<div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;  {</div>
<div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;    <span class="comment">// First pass: go over all points and insert them into the index_vector vector</span></div>
<div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;    <span class="comment">// with calculated idx. Points with the same idx value will contribute to the</span></div>
<div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;    <span class="comment">// same point of resulting CloudPoint</span></div>
<div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;    <span class="keywordflow">for</span> (std::vector&lt;int&gt;::const_iterator it = <a class="code" href="classpcl_1_1_p_c_l_base.html#aaee847c8a517ebf365bad2cb182a6626">indices_</a>-&gt;begin (); it != <a class="code" href="classpcl_1_1_p_c_l_base.html#aaee847c8a517ebf365bad2cb182a6626">indices_</a>-&gt;end (); ++it)</div>
<div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;    {</div>
<div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;      <span class="keywordflow">if</span> (!<a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;is_dense)</div>
<div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;        <span class="comment">// Check if the point is invalid</span></div>
<div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;        <span class="keywordflow">if</span> (!pcl_isfinite (<a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;points[*it].x) || </div>
<div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;            !pcl_isfinite (<a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;points[*it].y) || </div>
<div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;            !pcl_isfinite (<a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;points[*it].z))</div>
<div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;          <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160; </div>
<div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;      <span class="keywordtype">int</span> ijk0 = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (floor (<a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;points[*it].x * <a class="code" href="classpcl_1_1_voxel_grid.html#aed2cf27b47ad2059be72e03326d4ff00">inverse_leaf_size_</a>[0]) - <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> (<a class="code" href="classpcl_1_1_voxel_grid.html#aa920d3e9fa0d03643423ade34f6ec986">min_b_</a>[0]));</div>
<div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;      <span class="keywordtype">int</span> ijk1 = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (floor (<a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;points[*it].y * <a class="code" href="classpcl_1_1_voxel_grid.html#aed2cf27b47ad2059be72e03326d4ff00">inverse_leaf_size_</a>[1]) - <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> (<a class="code" href="classpcl_1_1_voxel_grid.html#aa920d3e9fa0d03643423ade34f6ec986">min_b_</a>[1]));</div>
<div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;      <span class="keywordtype">int</span> ijk2 = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (floor (<a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;points[*it].z * <a class="code" href="classpcl_1_1_voxel_grid.html#aed2cf27b47ad2059be72e03326d4ff00">inverse_leaf_size_</a>[2]) - <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> (<a class="code" href="classpcl_1_1_voxel_grid.html#aa920d3e9fa0d03643423ade34f6ec986">min_b_</a>[2]));</div>
<div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160; </div>
<div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;      <span class="comment">// Compute the centroid leaf index</span></div>
<div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;      <span class="keywordtype">int</span> idx = ijk0 * divb_mul_[0] + ijk1 * divb_mul_[1] + ijk2 * divb_mul_[2];</div>
<div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;      index_vector.push_back (<a class="code" href="structcloud__point__index__idx.html">cloud_point_index_idx</a> (<span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span> (idx), *it));</div>
<div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;    }</div>
<div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;  }</div>
<div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160; </div>
<div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;  <span class="comment">// Second pass: sort the index_vector vector using value representing target cell as index</span></div>
<div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;  <span class="comment">// in effect all points belonging to the same output cell will be next to each other</span></div>
<div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;  std::sort (index_vector.begin (), index_vector.end (), std::less&lt;cloud_point_index_idx&gt; ());</div>
<div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160; </div>
<div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;  <span class="comment">// Third pass: count output cells</span></div>
<div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;  <span class="comment">// we need to skip all the same, adjacenent idx values</span></div>
<div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> total = 0;</div>
<div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> index = 0;</div>
<div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;  <span class="comment">// first_and_last_indices_vector[i] represents the index in index_vector of the first point in</span></div>
<div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;  <span class="comment">// index_vector belonging to the voxel which corresponds to the i-th output point,</span></div>
<div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;  <span class="comment">// and of the first point not belonging to.</span></div>
<div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;  std::vector&lt;std::pair&lt;unsigned int, unsigned int&gt; &gt; first_and_last_indices_vector;</div>
<div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160;  <span class="comment">// Worst case size</span></div>
<div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;  first_and_last_indices_vector.reserve (index_vector.size ());</div>
<div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;  <span class="keywordflow">while</span> (index &lt; index_vector.size ()) </div>
<div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;  {</div>
<div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = index + 1;</div>
<div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;    <span class="keywordflow">while</span> (i &lt; index_vector.size () &amp;&amp; index_vector[i].idx == index_vector[index].idx) </div>
<div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;      ++i;</div>
<div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;    <span class="keywordflow">if</span> (i - index &gt;= <a class="code" href="classpcl_1_1_voxel_grid.html#a24a0c685d3d211e998e927766553b8e3">min_points_per_voxel_</a>)</div>
<div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;    {</div>
<div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;      ++total;</div>
<div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;      first_and_last_indices_vector.push_back (std::pair&lt;unsigned int, unsigned int&gt; (index, i));</div>
<div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;    }</div>
<div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;    index = i;</div>
<div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;  }</div>
<div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160; </div>
<div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;  <span class="comment">// Fourth pass: compute centroids, insert them into their final position</span></div>
<div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;  output.<a class="code" href="classpcl_1_1_point_cloud.html#af16a62638198313b9c093127c492c884">points</a>.resize (total);</div>
<div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;  <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_voxel_grid.html#a73e0f889875e09c1990ec088af6c82c4">save_leaf_layout_</a>)</div>
<div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;  {</div>
<div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;    <span class="keywordflow">try</span></div>
<div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;    { </div>
<div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;      <span class="comment">// Resizing won&#39;t reset old elements to -1.  If leaf_layout_ has been used previously, it needs to be re-initialized to -1</span></div>
<div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;      uint32_t new_layout_size = div_b_[0]*div_b_[1]*div_b_[2];</div>
<div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;      <span class="comment">//This is the number of elements that need to be re-initialized to -1</span></div>
<div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;      uint32_t reinit_size = std::min (<span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span> (new_layout_size), <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span> (<a class="code" href="classpcl_1_1_voxel_grid.html#a33222904207e6304aa3fbd2b31a9ac84">leaf_layout_</a>.size()));</div>
<div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;      <span class="keywordflow">for</span> (uint32_t i = 0; i &lt; reinit_size; i++)</div>
<div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;      {</div>
<div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;        <a class="code" href="classpcl_1_1_voxel_grid.html#a33222904207e6304aa3fbd2b31a9ac84">leaf_layout_</a>[i] = -1;</div>
<div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;      }        </div>
<div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;      <a class="code" href="classpcl_1_1_voxel_grid.html#a33222904207e6304aa3fbd2b31a9ac84">leaf_layout_</a>.resize (new_layout_size, -1);           </div>
<div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;    }</div>
<div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;    <span class="keywordflow">catch</span> (std::bad_alloc&amp;)</div>
<div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;    {</div>
<div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;      <span class="keywordflow">throw</span> PCLException(<span class="stringliteral">&quot;VoxelGrid bin size is too low; impossible to allocate memory for layout&quot;</span>, </div>
<div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;        <span class="stringliteral">&quot;voxel_grid.hpp&quot;</span>, <span class="stringliteral">&quot;applyFilter&quot;</span>);   </div>
<div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;    }</div>
<div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;    <span class="keywordflow">catch</span> (std::length_error&amp;)</div>
<div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160;    {</div>
<div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;      <span class="keywordflow">throw</span> PCLException(<span class="stringliteral">&quot;VoxelGrid bin size is too low; impossible to allocate memory for layout&quot;</span>, </div>
<div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160;        <span class="stringliteral">&quot;voxel_grid.hpp&quot;</span>, <span class="stringliteral">&quot;applyFilter&quot;</span>);   </div>
<div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;    }</div>
<div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;  }</div>
<div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;  </div>
<div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;  index = 0;</div>
<div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> cp = 0; cp &lt; first_and_last_indices_vector.size (); ++cp)</div>
<div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160;  {</div>
<div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160;    <span class="comment">// calculate centroid - sum values from all input points, that have the same idx value in index_vector array</span></div>
<div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> first_index = first_and_last_indices_vector[cp].first;</div>
<div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> last_index = first_and_last_indices_vector[cp].second;</div>
<div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160; </div>
<div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;    <span class="comment">// index is centroid final position in resulting PointCloud</span></div>
<div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160;    <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_voxel_grid.html#a73e0f889875e09c1990ec088af6c82c4">save_leaf_layout_</a>)</div>
<div class="line"><a name="l00404"></a><span class="lineno">  404</span>&#160;      <a class="code" href="classpcl_1_1_voxel_grid.html#a33222904207e6304aa3fbd2b31a9ac84">leaf_layout_</a>[index_vector[first_index].idx] = index;</div>
<div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160; </div>
<div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160;    <span class="comment">//Limit downsampling to coords</span></div>
<div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160;    <span class="keywordflow">if</span> (!<a class="code" href="classpcl_1_1_voxel_grid.html#a1789763b2f3b17cce937b9902cfb6175">downsample_all_data_</a>)</div>
<div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;    {</div>
<div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;      Eigen::Vector4f centroid (Eigen::Vector4f::Zero ());</div>
<div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160; </div>
<div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160;      <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> li = first_index; li &lt; last_index; ++li)</div>
<div class="line"><a name="l00412"></a><span class="lineno">  412</span>&#160;        centroid += <a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;points[index_vector[li].cloud_point_index].getVector4fMap ();</div>
<div class="line"><a name="l00413"></a><span class="lineno">  413</span>&#160; </div>
<div class="line"><a name="l00414"></a><span class="lineno">  414</span>&#160;      centroid /= <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> (last_index - first_index);</div>
<div class="line"><a name="l00415"></a><span class="lineno">  415</span>&#160;      output.<a class="code" href="classpcl_1_1_point_cloud.html#af16a62638198313b9c093127c492c884">points</a>[index].getVector4fMap () = centroid;</div>
<div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;    }</div>
<div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;    <span class="keywordflow">else</span></div>
<div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;    {</div>
<div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;      CentroidPoint&lt;PointT&gt; centroid;</div>
<div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160; </div>
<div class="line"><a name="l00421"></a><span class="lineno">  421</span>&#160;      <span class="comment">// fill in the accumulator with leaf points</span></div>
<div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160;      <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> li = first_index; li &lt; last_index; ++li)</div>
<div class="line"><a name="l00423"></a><span class="lineno">  423</span>&#160;        centroid.add (<a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;points[index_vector[li].cloud_point_index]);  </div>
<div class="line"><a name="l00424"></a><span class="lineno">  424</span>&#160; </div>
<div class="line"><a name="l00425"></a><span class="lineno">  425</span>&#160;      centroid.get (output.<a class="code" href="classpcl_1_1_point_cloud.html#af16a62638198313b9c093127c492c884">points</a>[index]);</div>
<div class="line"><a name="l00426"></a><span class="lineno">  426</span>&#160;    }</div>
<div class="line"><a name="l00427"></a><span class="lineno">  427</span>&#160;     </div>
<div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160;    ++index;</div>
<div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;  }</div>
<div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;  output.<a class="code" href="classpcl_1_1_point_cloud.html#a2185a6453f8ad905d7bdf7b45754a160">width</a> = <span class="keyword">static_cast&lt;</span>uint32_t<span class="keyword">&gt;</span> (output.<a class="code" href="classpcl_1_1_point_cloud.html#af16a62638198313b9c093127c492c884">points</a>.size ());</div>
<div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1_filter_html_a71040236d2c11da75b715d6d6bf5ba9d"><div class="ttname"><a href="classpcl_1_1_filter.html#a71040236d2c11da75b715d6d6bf5ba9d">pcl::Filter::getClassName</a></div><div class="ttdeci">const std::string &amp; getClassName() const</div><div class="ttdoc">Get a string representation of the name of this class.</div><div class="ttdef"><b>Definition:</b> filter.h:182</div></div>
<div class="ttc" id="aclasspcl_1_1_p_c_l_base_html_a09c70d8e06e3fb4f07903fe6f8d67869"><div class="ttname"><a href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">pcl::PCLBase::input_</a></div><div class="ttdeci">PointCloudConstPtr input_</div><div class="ttdoc">The input point cloud dataset.</div><div class="ttdef"><b>Definition:</b> pcl_base.h:150</div></div>
<div class="ttc" id="aclasspcl_1_1_p_c_l_base_html_aaee847c8a517ebf365bad2cb182a6626"><div class="ttname"><a href="classpcl_1_1_p_c_l_base.html#aaee847c8a517ebf365bad2cb182a6626">pcl::PCLBase::indices_</a></div><div class="ttdeci">IndicesPtr indices_</div><div class="ttdoc">A pointer to the vector of point indices to use.</div><div class="ttdef"><b>Definition:</b> pcl_base.h:153</div></div>
<div class="ttc" id="aclasspcl_1_1_point_cloud_html_a2185a6453f8ad905d7bdf7b45754a160"><div class="ttname"><a href="classpcl_1_1_point_cloud.html#a2185a6453f8ad905d7bdf7b45754a160">pcl::PointCloud::width</a></div><div class="ttdeci">uint32_t width</div><div class="ttdoc">The point cloud width (if organized as an image-structure).</div><div class="ttdef"><b>Definition:</b> point_cloud.h:413</div></div>
<div class="ttc" id="aclasspcl_1_1_point_cloud_html_a3ca88d8ebf6f4f35acbc31cdfb38aa94"><div class="ttname"><a href="classpcl_1_1_point_cloud.html#a3ca88d8ebf6f4f35acbc31cdfb38aa94">pcl::PointCloud::is_dense</a></div><div class="ttdeci">bool is_dense</div><div class="ttdoc">True if no points are invalid (e.g., have NaN or Inf values).</div><div class="ttdef"><b>Definition:</b> point_cloud.h:418</div></div>
<div class="ttc" id="aclasspcl_1_1_point_cloud_html_a4f34b45220c57f96607513ffad0d9582"><div class="ttname"><a href="classpcl_1_1_point_cloud.html#a4f34b45220c57f96607513ffad0d9582">pcl::PointCloud::height</a></div><div class="ttdeci">uint32_t height</div><div class="ttdoc">The point cloud height (if organized as an image-structure).</div><div class="ttdef"><b>Definition:</b> point_cloud.h:415</div></div>
<div class="ttc" id="aclasspcl_1_1_point_cloud_html_af16a62638198313b9c093127c492c884"><div class="ttname"><a href="classpcl_1_1_point_cloud.html#af16a62638198313b9c093127c492c884">pcl::PointCloud::points</a></div><div class="ttdeci">std::vector&lt; PointT, Eigen::aligned_allocator&lt; PointT &gt; &gt; points</div><div class="ttdoc">The point data.</div><div class="ttdef"><b>Definition:</b> point_cloud.h:410</div></div>
<div class="ttc" id="aclasspcl_1_1_voxel_grid_html_a1789763b2f3b17cce937b9902cfb6175"><div class="ttname"><a href="classpcl_1_1_voxel_grid.html#a1789763b2f3b17cce937b9902cfb6175">pcl::VoxelGrid::downsample_all_data_</a></div><div class="ttdeci">bool downsample_all_data_</div><div class="ttdoc">Set to true if all fields need to be downsampled, or false if just XYZ.</div><div class="ttdef"><b>Definition:</b> voxel_grid.h:463</div></div>
<div class="ttc" id="aclasspcl_1_1_voxel_grid_html_a24a0c685d3d211e998e927766553b8e3"><div class="ttname"><a href="classpcl_1_1_voxel_grid.html#a24a0c685d3d211e998e927766553b8e3">pcl::VoxelGrid::min_points_per_voxel_</a></div><div class="ttdeci">unsigned int min_points_per_voxel_</div><div class="ttdoc">Minimum number of points per voxel for the centroid to be computed</div><div class="ttdef"><b>Definition:</b> voxel_grid.h:487</div></div>
<div class="ttc" id="aclasspcl_1_1_voxel_grid_html_a33222904207e6304aa3fbd2b31a9ac84"><div class="ttname"><a href="classpcl_1_1_voxel_grid.html#a33222904207e6304aa3fbd2b31a9ac84">pcl::VoxelGrid::leaf_layout_</a></div><div class="ttdeci">std::vector&lt; int &gt; leaf_layout_</div><div class="ttdoc">The leaf layout information for fast access to cells relative to current position</div><div class="ttdef"><b>Definition:</b> voxel_grid.h:469</div></div>
<div class="ttc" id="aclasspcl_1_1_voxel_grid_html_a73e0f889875e09c1990ec088af6c82c4"><div class="ttname"><a href="classpcl_1_1_voxel_grid.html#a73e0f889875e09c1990ec088af6c82c4">pcl::VoxelGrid::save_leaf_layout_</a></div><div class="ttdeci">bool save_leaf_layout_</div><div class="ttdoc">Set to true if leaf layout information needs to be saved in leaf_layout_.</div><div class="ttdef"><b>Definition:</b> voxel_grid.h:466</div></div>
<div class="ttc" id="aclasspcl_1_1_voxel_grid_html_a8115c47d971f0af7a11c4148741f1171"><div class="ttname"><a href="classpcl_1_1_voxel_grid.html#a8115c47d971f0af7a11c4148741f1171">pcl::VoxelGrid::filter_limit_negative_</a></div><div class="ttdeci">bool filter_limit_negative_</div><div class="ttdoc">Set to true if we want to return the data outside (filter_limit_min_;filter_limit_max_)....</div><div class="ttdef"><b>Definition:</b> voxel_grid.h:484</div></div>
<div class="ttc" id="aclasspcl_1_1_voxel_grid_html_aa920d3e9fa0d03643423ade34f6ec986"><div class="ttname"><a href="classpcl_1_1_voxel_grid.html#aa920d3e9fa0d03643423ade34f6ec986">pcl::VoxelGrid::min_b_</a></div><div class="ttdeci">Eigen::Vector4i min_b_</div><div class="ttdoc">The minimum and maximum bin coordinates, the number of divisions, and the division multiplier.</div><div class="ttdef"><b>Definition:</b> voxel_grid.h:472</div></div>
<div class="ttc" id="aclasspcl_1_1_voxel_grid_html_aaec915dae701cca04f4598a818b7a02d"><div class="ttname"><a href="classpcl_1_1_voxel_grid.html#aaec915dae701cca04f4598a818b7a02d">pcl::VoxelGrid::filter_limit_max_</a></div><div class="ttdeci">double filter_limit_max_</div><div class="ttdoc">The maximum allowed filter value a point will be considered from.</div><div class="ttdef"><b>Definition:</b> voxel_grid.h:481</div></div>
<div class="ttc" id="aclasspcl_1_1_voxel_grid_html_ac7af4d73e7dd960d1d7c725a6f3fe9bc"><div class="ttname"><a href="classpcl_1_1_voxel_grid.html#ac7af4d73e7dd960d1d7c725a6f3fe9bc">pcl::VoxelGrid::filter_field_name_</a></div><div class="ttdeci">std::string filter_field_name_</div><div class="ttdoc">The desired user filter field name.</div><div class="ttdef"><b>Definition:</b> voxel_grid.h:475</div></div>
<div class="ttc" id="aclasspcl_1_1_voxel_grid_html_ad8929163e5e80d86881a9ad123fa468e"><div class="ttname"><a href="classpcl_1_1_voxel_grid.html#ad8929163e5e80d86881a9ad123fa468e">pcl::VoxelGrid::filter_limit_min_</a></div><div class="ttdeci">double filter_limit_min_</div><div class="ttdoc">The minimum allowed filter value a point will be considered from.</div><div class="ttdef"><b>Definition:</b> voxel_grid.h:478</div></div>
<div class="ttc" id="aclasspcl_1_1_voxel_grid_html_aed2cf27b47ad2059be72e03326d4ff00"><div class="ttname"><a href="classpcl_1_1_voxel_grid.html#aed2cf27b47ad2059be72e03326d4ff00">pcl::VoxelGrid::inverse_leaf_size_</a></div><div class="ttdeci">Eigen::Array4f inverse_leaf_size_</div><div class="ttdoc">Internal leaf sizes stored as 1/leaf_size_ for efficiency reasons.</div><div class="ttdef"><b>Definition:</b> voxel_grid.h:460</div></div>
<div class="ttc" id="agroup__common_html_ga2bc4b9a4e25de1d0b00db4e41f0ad682"><div class="ttname"><a href="group__common.html#ga2bc4b9a4e25de1d0b00db4e41f0ad682">pcl::getFieldIndex</a></div><div class="ttdeci">int getFieldIndex(const pcl::PCLPointCloud2 &amp;cloud, const std::string &amp;field_name)</div><div class="ttdoc">Get the index of a specified field (i.e., dimension/channel)</div><div class="ttdef"><b>Definition:</b> io.h:59</div></div>
<div class="ttc" id="astructcloud__point__index__idx_html"><div class="ttname"><a href="structcloud__point__index__idx.html">cloud_point_index_idx</a></div><div class="ttdef"><b>Definition:</b> voxel_grid.hpp:204</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a0b7ead02de1bfcce1100ff66cbc12998"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0b7ead02de1bfcce1100ff66cbc12998">&#9670;&nbsp;</a></span>getCentroidIndex()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="classpcl_1_1_voxel_grid.html">pcl::VoxelGrid</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::getCentroidIndex </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;&#160;</td>
          <td class="paramname"><em>p</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Returns the index in the resulting downsampled cloud of the specified point. </p>
<dl class="section note"><dt>注解</dt><dd>for efficiency, user must make sure that the saving of the leaf layout is enabled and filtering performed, and that the point is inside the grid, to avoid invalid access (or use getGridCoordinates+getCentroidIndexAt)</dd></dl>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">p</td><td>the point to get the index at </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;      {</div>
<div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;        <span class="keywordflow">return</span> (<a class="code" href="classpcl_1_1_voxel_grid.html#a33222904207e6304aa3fbd2b31a9ac84">leaf_layout_</a>.at ((Eigen::Vector4i (<span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (floor (p.x * <a class="code" href="classpcl_1_1_voxel_grid.html#aed2cf27b47ad2059be72e03326d4ff00">inverse_leaf_size_</a>[0])), </div>
<div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;                                                   <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (floor (p.y * <a class="code" href="classpcl_1_1_voxel_grid.html#aed2cf27b47ad2059be72e03326d4ff00">inverse_leaf_size_</a>[1])), </div>
<div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;                                                   <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (floor (p.z * <a class="code" href="classpcl_1_1_voxel_grid.html#aed2cf27b47ad2059be72e03326d4ff00">inverse_leaf_size_</a>[2])), 0) - <a class="code" href="classpcl_1_1_voxel_grid.html#aa920d3e9fa0d03643423ade34f6ec986">min_b_</a>).dot (divb_mul_)));</div>
<div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;      }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a1343f669f040cee74afcf0bdafef68ee"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1343f669f040cee74afcf0bdafef68ee">&#9670;&nbsp;</a></span>getCentroidIndexAt()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="classpcl_1_1_voxel_grid.html">pcl::VoxelGrid</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::getCentroidIndexAt </td>
          <td>(</td>
          <td class="paramtype">const Eigen::Vector3i &amp;&#160;</td>
          <td class="paramname"><em>ijk</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Returns the index in the downsampled cloud corresponding to a given set of coordinates. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">ijk</td><td>the coordinates (i,j,k) in the grid (-1 if empty) </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;      {</div>
<div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;        <span class="keywordtype">int</span> idx = ((Eigen::Vector4i() &lt;&lt; ijk, 0).finished() - <a class="code" href="classpcl_1_1_voxel_grid.html#aa920d3e9fa0d03643423ade34f6ec986">min_b_</a>).dot (divb_mul_);</div>
<div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;        <span class="keywordflow">if</span> (idx &lt; 0 || idx &gt;= <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (<a class="code" href="classpcl_1_1_voxel_grid.html#a33222904207e6304aa3fbd2b31a9ac84">leaf_layout_</a>.size ())) <span class="comment">// this checks also if leaf_layout_.size () == 0 i.e. everything was computed as needed</span></div>
<div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;        {</div>
<div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;          <span class="comment">//if (verbose)</span></div>
<div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;          <span class="comment">//  PCL_ERROR (&quot;[pcl::%s::getCentroidIndexAt] Specified coordinate is outside grid bounds, or leaf layout is not saved, make sure to call setSaveLeafLayout(true) and filter(output) first!\n&quot;, getClassName ().c_str ());</span></div>
<div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;          <span class="keywordflow">return</span> (-1);</div>
<div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;        }</div>
<div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;        <span class="keywordflow">return</span> (<a class="code" href="classpcl_1_1_voxel_grid.html#a33222904207e6304aa3fbd2b31a9ac84">leaf_layout_</a>[idx]);</div>
<div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;      }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a6d533280865d5fbd991b8b45383b4fb2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6d533280865d5fbd991b8b45383b4fb2">&#9670;&nbsp;</a></span>getFilterLimits()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_voxel_grid.html">pcl::VoxelGrid</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::getFilterLimits </td>
          <td>(</td>
          <td class="paramtype">double &amp;&#160;</td>
          <td class="paramname"><em>limit_min</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double &amp;&#160;</td>
          <td class="paramname"><em>limit_max</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Get the field filter limits (min/max) set by the user. The default values are -FLT_MAX, FLT_MAX. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[out]</td><td class="paramname">limit_min</td><td>the minimum allowed field value </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">limit_max</td><td>the maximum allowed field value </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160;      {</div>
<div class="line"><a name="l00423"></a><span class="lineno">  423</span>&#160;        limit_min = <a class="code" href="classpcl_1_1_voxel_grid.html#ad8929163e5e80d86881a9ad123fa468e">filter_limit_min_</a>;</div>
<div class="line"><a name="l00424"></a><span class="lineno">  424</span>&#160;        limit_max = <a class="code" href="classpcl_1_1_voxel_grid.html#aaec915dae701cca04f4598a818b7a02d">filter_limit_max_</a>;</div>
<div class="line"><a name="l00425"></a><span class="lineno">  425</span>&#160;      }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a41b9bf8bdb39475a714bf09d0bffa1b2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a41b9bf8bdb39475a714bf09d0bffa1b2">&#9670;&nbsp;</a></span>getFilterLimitsNegative() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="classpcl_1_1_voxel_grid.html">pcl::VoxelGrid</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::getFilterLimitsNegative </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Get whether the data outside the interval (min/max) is to be returned (true) or inside (false). </p>
<dl class="section return"><dt>返回</dt><dd>true if data <b>outside</b> the interval [min; max] is to be returned, false otherwise </dd></dl>
<div class="fragment"><div class="line"><a name="l00451"></a><span class="lineno">  451</span>&#160;      {</div>
<div class="line"><a name="l00452"></a><span class="lineno">  452</span>&#160;        <span class="keywordflow">return</span> (<a class="code" href="classpcl_1_1_voxel_grid.html#a8115c47d971f0af7a11c4148741f1171">filter_limit_negative_</a>);</div>
<div class="line"><a name="l00453"></a><span class="lineno">  453</span>&#160;      }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a1faafa6a4c3fe10e1e7d83fe353de058"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1faafa6a4c3fe10e1e7d83fe353de058">&#9670;&nbsp;</a></span>getFilterLimitsNegative() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_voxel_grid.html">pcl::VoxelGrid</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::getFilterLimitsNegative </td>
          <td>(</td>
          <td class="paramtype">bool &amp;&#160;</td>
          <td class="paramname"><em>limit_negative</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Get whether the data outside the interval (min/max) is to be returned (true) or inside (false). </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[out]</td><td class="paramname">limit_negative</td><td>true if data <b>outside</b> the interval [min; max] is to be returned, false otherwise </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00442"></a><span class="lineno">  442</span>&#160;      {</div>
<div class="line"><a name="l00443"></a><span class="lineno">  443</span>&#160;        limit_negative = <a class="code" href="classpcl_1_1_voxel_grid.html#a8115c47d971f0af7a11c4148741f1171">filter_limit_negative_</a>;</div>
<div class="line"><a name="l00444"></a><span class="lineno">  444</span>&#160;      }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a900833dc1c7222056de41c358b0534b8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a900833dc1c7222056de41c358b0534b8">&#9670;&nbsp;</a></span>getGridCoordinates()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">Eigen::Vector3i <a class="el" href="classpcl_1_1_voxel_grid.html">pcl::VoxelGrid</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::getGridCoordinates </td>
          <td>(</td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>z</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Returns the corresponding (i,j,k) coordinates in the grid of point (x,y,z). </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">x</td><td>the X point coordinate to get the (i, j, k) index at </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">y</td><td>the Y point coordinate to get the (i, j, k) index at </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">z</td><td>the Z point coordinate to get the (i, j, k) index at </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;      { </div>
<div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;        <span class="keywordflow">return</span> (Eigen::Vector3i (<span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (floor (x * <a class="code" href="classpcl_1_1_voxel_grid.html#aed2cf27b47ad2059be72e03326d4ff00">inverse_leaf_size_</a>[0])), </div>
<div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;                                 <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (floor (y * <a class="code" href="classpcl_1_1_voxel_grid.html#aed2cf27b47ad2059be72e03326d4ff00">inverse_leaf_size_</a>[1])), </div>
<div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;                                 <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (floor (z * <a class="code" href="classpcl_1_1_voxel_grid.html#aed2cf27b47ad2059be72e03326d4ff00">inverse_leaf_size_</a>[2])))); </div>
<div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;      }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a3ab26a1286bc68d1129e1a62908869ce"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3ab26a1286bc68d1129e1a62908869ce">&#9670;&nbsp;</a></span>getLeafLayout()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::vector&lt;int&gt; <a class="el" href="classpcl_1_1_voxel_grid.html">pcl::VoxelGrid</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::getLeafLayout </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Returns the layout of the leafs for fast access to cells relative to current position. </p>
<dl class="section note"><dt>注解</dt><dd>position at (i-min_x) + (j-min_y)*div_x + (k-min_z)*div_x*div_y holds the index of the element at coordinates (i,j,k) in the grid (-1 if empty) </dd></dl>
<div class="fragment"><div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;{ <span class="keywordflow">return</span> (<a class="code" href="classpcl_1_1_voxel_grid.html#a33222904207e6304aa3fbd2b31a9ac84">leaf_layout_</a>); }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a28015aa9f1c9329c66ce8a02b727a783"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a28015aa9f1c9329c66ce8a02b727a783">&#9670;&nbsp;</a></span>getNeighborCentroidIndices()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::vector&lt;int&gt; <a class="el" href="classpcl_1_1_voxel_grid.html">pcl::VoxelGrid</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::getNeighborCentroidIndices </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;&#160;</td>
          <td class="paramname"><em>reference_point</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const Eigen::MatrixXi &amp;&#160;</td>
          <td class="paramname"><em>relative_coordinates</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Returns the indices in the resulting downsampled cloud of the points at the specified grid coordinates, relative to the grid coordinates of the specified point (or -1 if the cell was empty/out of bounds). </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">reference_point</td><td>the coordinates of the reference point (corresponding cell is allowed to be empty/out of bounds) </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">relative_coordinates</td><td>matrix with the columns being the coordinates of the requested cells, relative to the reference point's cell </td></tr>
  </table>
  </dd>
</dl>
<dl class="section note"><dt>注解</dt><dd>for efficiency, user must make sure that the saving of the leaf layout is enabled and filtering performed </dd></dl>
<div class="fragment"><div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;      {</div>
<div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;        Eigen::Vector4i ijk (<span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (floor (reference_point.x * <a class="code" href="classpcl_1_1_voxel_grid.html#aed2cf27b47ad2059be72e03326d4ff00">inverse_leaf_size_</a>[0])), </div>
<div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;                             <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (floor (reference_point.y * <a class="code" href="classpcl_1_1_voxel_grid.html#aed2cf27b47ad2059be72e03326d4ff00">inverse_leaf_size_</a>[1])), </div>
<div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;                             <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (floor (reference_point.z * <a class="code" href="classpcl_1_1_voxel_grid.html#aed2cf27b47ad2059be72e03326d4ff00">inverse_leaf_size_</a>[2])), 0);</div>
<div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;        Eigen::Array4i diff2min = <a class="code" href="classpcl_1_1_voxel_grid.html#aa920d3e9fa0d03643423ade34f6ec986">min_b_</a> - ijk;</div>
<div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;        Eigen::Array4i diff2max = max_b_ - ijk;</div>
<div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;        std::vector&lt;int&gt; neighbors (relative_coordinates.cols());</div>
<div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;        <span class="keywordflow">for</span> (<span class="keywordtype">int</span> ni = 0; ni &lt; relative_coordinates.cols (); ni++)</div>
<div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;        {</div>
<div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;          Eigen::Vector4i displacement = (Eigen::Vector4i() &lt;&lt; relative_coordinates.col(ni), 0).finished();</div>
<div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;          <span class="comment">// checking if the specified cell is in the grid</span></div>
<div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;          <span class="keywordflow">if</span> ((diff2min &lt;= displacement.array()).all() &amp;&amp; (diff2max &gt;= displacement.array()).all())</div>
<div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;            neighbors[ni] = <a class="code" href="classpcl_1_1_voxel_grid.html#a33222904207e6304aa3fbd2b31a9ac84">leaf_layout_</a>[((ijk + displacement - <a class="code" href="classpcl_1_1_voxel_grid.html#aa920d3e9fa0d03643423ade34f6ec986">min_b_</a>).dot (divb_mul_))]; <span class="comment">// .at() can be omitted</span></div>
<div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;          <span class="keywordflow">else</span></div>
<div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;            neighbors[ni] = -1; <span class="comment">// cell is out of bounds, consider it empty</span></div>
<div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;        }</div>
<div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;        <span class="keywordflow">return</span> (neighbors);</div>
<div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;      }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a1694d46442c66f7071235a8571dd602a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1694d46442c66f7071235a8571dd602a">&#9670;&nbsp;</a></span>setDownsampleAllData()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_voxel_grid.html">pcl::VoxelGrid</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::setDownsampleAllData </td>
          <td>(</td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>downsample</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Set to true if all fields need to be downsampled, or false if just XYZ. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">downsample</td><td>the new value (true/false) </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;{ <a class="code" href="classpcl_1_1_voxel_grid.html#a1789763b2f3b17cce937b9902cfb6175">downsample_all_data_</a> = downsample; }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a155aa8fce756b002bb1b4b352f8f530f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a155aa8fce756b002bb1b4b352f8f530f">&#9670;&nbsp;</a></span>setFilterFieldName()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_voxel_grid.html">pcl::VoxelGrid</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::setFilterFieldName </td>
          <td>(</td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>field_name</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Provide the name of the field to be used for filtering data. In conjunction with <em>setFilterLimits</em>, points having values outside this interval will be discarded. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">field_name</td><td>the name of the field that contains values used for filtering </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;      {</div>
<div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;        <a class="code" href="classpcl_1_1_voxel_grid.html#ac7af4d73e7dd960d1d7c725a6f3fe9bc">filter_field_name_</a> = field_name;</div>
<div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;      }</div>
</div><!-- fragment -->
</div>
</div>
<a id="afc6d78962d7378aea245381fdb13e65e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afc6d78962d7378aea245381fdb13e65e">&#9670;&nbsp;</a></span>setFilterLimits()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_voxel_grid.html">pcl::VoxelGrid</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::setFilterLimits </td>
          <td>(</td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>limit_min</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>limit_max</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Set the field filter limits. All points having field values outside this interval will be discarded. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">limit_min</td><td>the minimum allowed field value </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">limit_max</td><td>the maximum allowed field value </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160;      {</div>
<div class="line"><a name="l00412"></a><span class="lineno">  412</span>&#160;        <a class="code" href="classpcl_1_1_voxel_grid.html#ad8929163e5e80d86881a9ad123fa468e">filter_limit_min_</a> = limit_min;</div>
<div class="line"><a name="l00413"></a><span class="lineno">  413</span>&#160;        <a class="code" href="classpcl_1_1_voxel_grid.html#aaec915dae701cca04f4598a818b7a02d">filter_limit_max_</a> = limit_max;</div>
<div class="line"><a name="l00414"></a><span class="lineno">  414</span>&#160;      }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a1fc5ee26e1ab45ceb7eb7f28fa7c09ba"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1fc5ee26e1ab45ceb7eb7f28fa7c09ba">&#9670;&nbsp;</a></span>setFilterLimitsNegative()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_voxel_grid.html">pcl::VoxelGrid</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::setFilterLimitsNegative </td>
          <td>(</td>
          <td class="paramtype">const bool&#160;</td>
          <td class="paramname"><em>limit_negative</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Set to true if we want to return the data outside the interval specified by setFilterLimits (min, max). Default: false. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">limit_negative</td><td>return data inside the interval (false) or outside (true) </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00433"></a><span class="lineno">  433</span>&#160;      {</div>
<div class="line"><a name="l00434"></a><span class="lineno">  434</span>&#160;        <a class="code" href="classpcl_1_1_voxel_grid.html#a8115c47d971f0af7a11c4148741f1171">filter_limit_negative_</a> = limit_negative;</div>
<div class="line"><a name="l00435"></a><span class="lineno">  435</span>&#160;      }</div>
</div><!-- fragment -->
</div>
</div>
<a id="aa5d7831e665977bdce76ed05bd0005cf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa5d7831e665977bdce76ed05bd0005cf">&#9670;&nbsp;</a></span>setLeafSize() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_voxel_grid.html">pcl::VoxelGrid</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::setLeafSize </td>
          <td>(</td>
          <td class="paramtype">const Eigen::Vector4f &amp;&#160;</td>
          <td class="paramname"><em>leaf_size</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Set the voxel grid leaf size. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">leaf_size</td><td>the voxel grid leaf size </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;      { </div>
<div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;        <a class="code" href="classpcl_1_1_voxel_grid.html#ad6e7aa7d90c1b75ab43d38c48dcff799">leaf_size_</a> = leaf_size; </div>
<div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;        <span class="comment">// Avoid division errors</span></div>
<div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;        <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_voxel_grid.html#ad6e7aa7d90c1b75ab43d38c48dcff799">leaf_size_</a>[3] == 0)</div>
<div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;          <a class="code" href="classpcl_1_1_voxel_grid.html#ad6e7aa7d90c1b75ab43d38c48dcff799">leaf_size_</a>[3] = 1;</div>
<div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;        <span class="comment">// Use multiplications instead of divisions</span></div>
<div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;        <a class="code" href="classpcl_1_1_voxel_grid.html#aed2cf27b47ad2059be72e03326d4ff00">inverse_leaf_size_</a> = Eigen::Array4f::Ones () / <a class="code" href="classpcl_1_1_voxel_grid.html#ad6e7aa7d90c1b75ab43d38c48dcff799">leaf_size_</a>.array ();</div>
<div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;      }</div>
<div class="ttc" id="aclasspcl_1_1_voxel_grid_html_ad6e7aa7d90c1b75ab43d38c48dcff799"><div class="ttname"><a href="classpcl_1_1_voxel_grid.html#ad6e7aa7d90c1b75ab43d38c48dcff799">pcl::VoxelGrid::leaf_size_</a></div><div class="ttdeci">Eigen::Vector4f leaf_size_</div><div class="ttdoc">The size of a leaf.</div><div class="ttdef"><b>Definition:</b> voxel_grid.h:457</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="adf15a6f5cc058b790be6557c4fb11022"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adf15a6f5cc058b790be6557c4fb11022">&#9670;&nbsp;</a></span>setLeafSize() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_voxel_grid.html">pcl::VoxelGrid</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::setLeafSize </td>
          <td>(</td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>lx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>ly</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>lz</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Set the voxel grid leaf size. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">lx</td><td>the leaf size for X </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">ly</td><td>the leaf size for Y </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">lz</td><td>the leaf size for Z </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;      {</div>
<div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;        <a class="code" href="classpcl_1_1_voxel_grid.html#ad6e7aa7d90c1b75ab43d38c48dcff799">leaf_size_</a>[0] = lx; <a class="code" href="classpcl_1_1_voxel_grid.html#ad6e7aa7d90c1b75ab43d38c48dcff799">leaf_size_</a>[1] = ly; <a class="code" href="classpcl_1_1_voxel_grid.html#ad6e7aa7d90c1b75ab43d38c48dcff799">leaf_size_</a>[2] = lz;</div>
<div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;        <span class="comment">// Avoid division errors</span></div>
<div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;        <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_voxel_grid.html#ad6e7aa7d90c1b75ab43d38c48dcff799">leaf_size_</a>[3] == 0)</div>
<div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;          <a class="code" href="classpcl_1_1_voxel_grid.html#ad6e7aa7d90c1b75ab43d38c48dcff799">leaf_size_</a>[3] = 1;</div>
<div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;        <span class="comment">// Use multiplications instead of divisions</span></div>
<div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;        <a class="code" href="classpcl_1_1_voxel_grid.html#aed2cf27b47ad2059be72e03326d4ff00">inverse_leaf_size_</a> = Eigen::Array4f::Ones () / <a class="code" href="classpcl_1_1_voxel_grid.html#ad6e7aa7d90c1b75ab43d38c48dcff799">leaf_size_</a>.array ();</div>
<div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;      }</div>
</div><!-- fragment -->
</div>
</div>
<a id="aaed8373030c2ec0ec7571a7851d37c2c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaed8373030c2ec0ec7571a7851d37c2c">&#9670;&nbsp;</a></span>setMinimumPointsNumberPerVoxel()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_voxel_grid.html">pcl::VoxelGrid</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::setMinimumPointsNumberPerVoxel </td>
          <td>(</td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>min_points_per_voxel</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Set the minimum number of points required for a voxel to be used. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">min_points_per_voxel</td><td>the minimum number of points for required for a voxel to be used </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;{ <a class="code" href="classpcl_1_1_voxel_grid.html#a24a0c685d3d211e998e927766553b8e3">min_points_per_voxel_</a> = min_points_per_voxel; }</div>
</div><!-- fragment -->
</div>
</div>
<a id="aabb07bacf03039f40d256b36ee2dd495"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aabb07bacf03039f40d256b36ee2dd495">&#9670;&nbsp;</a></span>setSaveLeafLayout()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_voxel_grid.html">pcl::VoxelGrid</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::setSaveLeafLayout </td>
          <td>(</td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>save_leaf_layout</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Set to true if leaf layout information needs to be saved for later access. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">save_leaf_layout</td><td>the new value (true/false) </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;{ <a class="code" href="classpcl_1_1_voxel_grid.html#a73e0f889875e09c1990ec088af6c82c4">save_leaf_layout_</a> = save_leaf_layout; }</div>
</div><!-- fragment -->
</div>
</div>
<hr/>该类的文档由以下文件生成:<ul>
<li>filters/include/pcl/filters/<a class="el" href="filters_2include_2pcl_2filters_2voxel__grid_8h_source.html">voxel_grid.h</a></li>
<li>filters/include/pcl/filters/impl/<a class="el" href="voxel__grid_8hpp_source.html">voxel_grid.hpp</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><b>pcl</b></li><li class="navelem"><a class="el" href="classpcl_1_1_voxel_grid.html">VoxelGrid</a></li>
    <li class="footer">制作者 <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
  </ul>
</div>
</body>
</html>
